sudoku solver implementation