A Sudoku solver that also teaches