Thank you for the feedback! I think you're right about why the game freezes after finishing level 20.
I would love to alter the levels more than the direction, but they are still in a complicated custom format adapted for the 13kb jam and I didn't have the time to rewrite it. They are actually made in Tiled, parsed with a script into strings that are finally concatenated into a long level data string with things like positions of knives and their times baked into shared bytes. Now, with a little more experience I think I could have skipped some of the tricks since zip probably would do it better anyway...
Again, thanks for the feedback. I'm super happy someone actually finished it with all knifes.