Puzzle-solver