This is an exercise for my AI University course. I haven't made the actual game but I have implemented the part that solves the game :).
The solve function is just a basic implementation of the DFS algorithm.
This function implement A* seach algorithm to find the optimal solution (the solution with the minimum number of moves) in a reasonable time.