I actually first thought that there was some problem in the hashes. So I added some debug code to look at that issue. You can see what I did.
I saw the error and then added debug stuff. That's why the
good bad run doesn't have that info.
You will see how I generated the regex. I did this in a straightforward way. My way generates some results that are not valid, but it was very easy to do while "hacking". Taking out a few extraneous results seemed to be a good way to go at the time. And it still seems like a good idea. A completely optimal regex is not necessary here.
I made the interface so that I type in exactly the list of letters the puzzle presents. If there are 2 "e"'s, I type in 2 "e"'s.