sudoko solver with backtracking