private static void AutoSolve(Puzzle puzzle)
        {
            Console.Clear();
            PrintTemplates.Logo2();
            Console.WriteLine("\n    Searching for the shortest answer, Please wait.. !\n");

            PuzzleSolver solver = new PuzzleSolver(puzzle);

            PuzzleAnswer answer = solver.SolveAsync().Result;

            if (answer != null)
            {
                foreach (var item in answer.Path)
                {
                    Console.WriteLine(item);
                }

                Console.WriteLine("\tTested States Count: " + answer.TestedStatesCount);
                Console.WriteLine("\tShortest Answer Steps Count: " + answer.StepsCount);
            }
            else
            {
                Console.WriteLine("\tSorry, we couldn't find any answer!");
            }

            Console.WriteLine("\n\tPress any key to exit..");
            Console.ReadKey();
        }
        private static void PrintPuzzle(Puzzle puzzle)
        {
            Console.Clear();
            PrintTemplates.Logo2();
            Console.WriteLine("\n" + puzzle.CurrentState);


            StateDetails details = new StateDetails(puzzle);

            Console.Write("    F = " + details.F);
            Console.Write("\tG = " + details.G);
            Console.Write("\tH = " + details.H + "\n");


            PrintTemplates.HowToPlay();
        }