Just finished this challenge, this was great fun. I tried many approaches, and the solution came from a unexpected direction…. Of course, it helps to have such a long ciphertext, and I am not sure the approach I used will work on Challenge 5 of the series which has much shorter text …
Indeed there is a small mistake, one plaintext letter (a Capital one) has two different Ciphertext values.
But overall, one of the most enjoying challenges, there nothing like progressing step after step in the analysis, then seeing the first plain text word suddenly emerge from gibberish (compared to challenges which are more "all or nothing") ….
Many thanks to the author of the challenge,