PUZZLE SOLVER