Thanks for your implementation.
I can't use the levenshtien distance because although it is a
better solution, I want to keep the implementation as compatible
with those in the other languages as possible.
Your main() is much shorter than mine, but doesn't match the
behaviour (and again I want to keep the same as the other
implementations). Nonetheless, I didn't know about generate!()(),
so I've learnt from yours.
Nor did I know about the StopWatch which I'm now using, plus I've
added your static assert, and also copied your idea of making
update() an inner function (and now only needing one parameter).
I still need to study your genLadder() more carefully to
understand it because it is so compact.