It's a frustrating problem: it's still a little arbitrary how many candidate routes you hold on to at each step, which is undesirable.
Also, I coded it for up to 4 steps at a time, which speeded things up for shorter sequences, but made it harder to get a solution for the very longest sequences. So I downgraded to 3 steps at a time.