If you crack open a completed .puz file in a hex editor, you can see the layout with the user's answers and the "key" answers, laid out as the grid is laid out. If the .puz isn't scrambled (or "locked"), then it's a plain english text read. If it's scrambled, then the second ('answer') grid will be scrambled. In the actual AcrossLite application, entering the 4-digit (1-9, no 0's!) code will de-scramble the "answer key" copy in memory, and allow direct comparisons (check word, check grid, etc). After applying the 4-digit key to the puzzle, subsequent saves to disk will save an 'unlocked' version. Anyway, several years ago, during a time I should have (no doubt) been working on something else, I fiddled around and found where (and how) the 4-digit key is stored in the .puz file, and (subsequently) how to use that key number to translate the 'scrambled' grid in the .puz file into an 'unscrambled' grid. Again, I'll snoop around and see if I can find that code snippet, and apply it to the project.