A recursive A* N-Puzzle solver and generator