what was the hardest part of the puzzle validation logic detecting unique solutions or handling edge cases in user input?