Traditionally, a word ladder is a series of words that connect one word to another word by switching one letter at a time. A ladder connecting "APE" to "MAN" might proceed like "APE" => "APT" => "OPT => "OAT" => "MAT" => "MAN", while a ladder connecting "GOOD" to "EVIL" could go "GOOD" => "FOOD" => "FOOL" => ...hmmm... maybe there's not a ladder connecting those...
While they may seem merely like a kid's cereal box challenge, word ladders journey through their respective dictionaries in fascinating ways that buck etymological, definitional, and rhyming connections in favor of modular ones, often to surprising ends. The way our brains try to construct these ladders also mimics the behavior of a breadth-first search through a tree data model: the starting word can be taken to be a root node with its children being all the words that are one letter away from it, and, hopefully, the ending word being one of its descendants.
These ladders, modeled like trees, can inadvertently connect vast networks of words within a single dictionary. The inclusion of operations like anagramming and adding or dropping letters can connect even vaster swaths of words. (That is, we couldn't allow for "GOOD" => "MOOD" => "MOLD" => "MILD" => "MILE" => "VILE" => "EVIL" before allowing for anagramming.)
With the help of a sometimes strange (and very PG) dictionary .txt file and some pretty efficient dictionary traversal algorithms, I have put together a combination word ladder generator and visualizer of sorts. Try it out by putting some regular old words in and seeing if it can connect them, and take a look at the tree it generates when it can (or even sometimes can't) find the shortest possible path between your inputs.
For this project I made use of d3 code from Mike Bostock's "Tree, Tidy" article on Observable (https://observablehq.com/@d3/tree) and a dictionary text file from App Academy.