I had to do this stuff. Well, a Sudoku solver for a class years and years ago.
I'm not looking too
closely at your code. I'm assuming that you're doing most things right and just trying to match statement chunks to see if you're obviously missing something. Which you are.(make this space blank again, and the number available)
I don't see a chunk of code in your thinger that's doing this action. IE- Nothing like this following chunk.
square[step][level] = BLANK_INT;
Fix that chunk and add it in the appropriate place and you might be closer to your goal.