You made me chuckle a bit with the whole “hand-made solver” thing with discrete puzzles like this, since 99% of the time to create a new puzzle, you just start with a solved problem (arithmetic equality) and introduce a sequence of random valid moves to put it in a unsolved state.
I remember one of my freshman computer science assignments was to make a Rubik’s Cube game. That was when a lot of undergrads were first introduced to the idea of using a stack and then "unwinding" it to simultaneously build the problem + solution.