The Challenge
Mark Nandor is a school-teacher who has exhaustively listed all of the 26,811 English words that can be spelled using only chemical symbols.
But, he didn’t stop there with his musings. He came up with many little restrictions (one letter chemical symbols or no repeating). He also came up with Chemical Word Squares.
Finally, in passing he wrote:
Chemical Word Ladders
A word ladder is a list of words that only one character at a time, as this ladder provided by a reader:
FeN
FeAt
CoAt
COAt
CHeAt
ReHeAt
ReHeArAt some point in the future, I’ll be looking to generate lists of these. If you beat me to it, let me know and I’ll link to your work!
That sounds like a challenge I could take up.
The Method
I read in all of the 28,611 English words, and put them into an array of dictionaries, based on their word length.
Word Length | Number of Words in Mark Nandor’s List |
---|---|
1 | 0 |
2 | 47 |
3 | 351 |
4 | 1310 |
5 | 2516 |
6 | 3454 |
7 | 4278 |
8 | 4392 |
9 | 3406 |
10 | 2417 |
11 | 1693 |
12 | 1197 |
13 | 756 |
14 | 449 |
15 | 251 |
16 | 153 |
17 | 80 |
18 | 35 |
19 | 18 |
20 | 5 |
21 | 1 |
22 | 1 |
23 | 1 |
Now, I arbitrarily decided what the shortest word-length in the ladder should be. In the example above, the anonymous reader started with a three-letter word. I went with that to begin with.
I created another array of dictionaries, again based on word-length.
In the first (length 3) dictionary, I put all of the 351 three-letter words from the master list.
In the second dictionary (length 4), I put all of the four-letter words that could be built from a three-letter word. I did this by iterating through each of the 1310 four-letter words, and for each one, dropping each letter, and checking if the result was in the previous (3-letter) dictionary.
I now had 680 four-letter words that could be formed from 3-letter words.
I did it again, for five-letter words, filtering out the words that couldn’t be formed from four-letter words, and so on.
Eventually, the dictionaries were empty.
Now, each word may be able to reduce to more than one of the shorter words. So, for each word in the dictionary, I recorded a list of the shorter words it could reduce to.
All that I needed to do next, was print the result.
Results
How Many Words Can Be Produced From Three-Letters?
Word Length | Number of Words That Can Be “Laddered” from Three-Letter Words |
---|---|
1 | N/A |
2 | N/A |
3 | 351 (All of them) |
4 | 680 |
5 | 823 |
6 | 624 |
7 | 346 |
8 | 131 |
9 | 13 |
10 | 0 |
All Nine-Letter To Three-Letter Chemical Ladders
Nine-Letter Word | Ladders That Lead To That Word |
---|---|
pricklier |
→ prickier → pickier → picker → piker → pier → per → prickier → pricier → pricer → prier → pier → per → prickier → pricker → picker → piker → pier → per → prickier → pricker → pricer → prier → pier → per |
upraisers |
→ praisers → praises → prises → pries → pies → pes → praisers → praises → prises → pries → pies → pis → praisers → praises → prises → priss → piss → pis → praisers → praises → prases → pases → pass → ass → praisers → praises → prases → pases → pass → pas → uprisers → uprises → prises → pries → pies → pes → uprisers → uprises → prises → pries → pies → pis → uprisers → uprises → prises → priss → piss → pis → upraises → praises → prises → pries → pies → pes → upraises → praises → prises → pries → pies → pis → upraises → praises → prises → priss → piss → pis → upraises → praises → prases → pases → pass → ass → upraises → praises → prases → pases → pass → pas → upraises → uprises → prises → pries → pies → pes → upraises → uprises → prises → pries → pies → pis → upraises → uprises → prises → priss → piss → pis |
broachers |
→ broaches → braches → braces → braes → bras → ras → broaches → braches → braces → braes → bras → bas |
saltiness |
→ saltines → salines → alines → lines → lies → lis → saltines → salines → alines → lines → lins → ins → saltines → salines → alines → lines → lins → lis |
confiners |
→ confines → conines → conies → cones → ones → oes → confines → conines → conies → cones → ones → ons → confines → conines → conies → cones → cons → ons → confines → conines → conies → cones → cons → cos → confines → conines → conins → coins → cons → ons → confines → conines → conins → coins → cons → cos → confines → conines → conins → conns → cons → ons → confines → conines → conins → conns → cons → cos → confines → conines → conins → conns → cons → ons → confines → conines → conins → conns → cons → cos |
smaltines |
→ saltines → salines → alines → lines → lies → lis → saltines → salines → alines → lines → lins → ins → saltines → salines → alines → lines → lins → lis |
caressers |
→ caresses → cresses → cesses → esses → eses → ess → caresses → cresses → cesses → esses → eses → ess |
sheathers |
→ heathers → heaters → haters → hates → hats → has → sheathes → sheaths → heaths → heths → hehs → hes → sheathes → sheaths → heaths → heats → hats → has |
splashers |
→ plashers → lashers → lasers → lases → lass → ass → plashers → lashers → lasers → lases → lass → las → plashers → lashers → lashes → ashes → shes → hes → plashers → lashers → lashes → lases → lass → ass → plashers → lashers → lashes → lases → lass → las → plashers → plashes → lashes → ashes → shes → hes → plashers → plashes → lashes → lases → lass → ass → plashers → plashes → lashes → lases → lass → las → plashers → plashes → pashes → ashes → shes → hes → plashers → plashes → pashes → pases → pass → ass → plashers → plashes → pashes → pases → pass → pas → slashers → lashers → lasers → lases → lass → ass → slashers → lashers → lasers → lases → lass → las → slashers → lashers → lashes → ashes → shes → hes → slashers → lashers → lashes → lases → lass → ass → slashers → lashers → lashes → lases → lass → las → slashers → slashes → lashes → ashes → shes → hes → slashers → slashes → lashes → lases → lass → ass → slashers → slashes → lashes → lases → lass → las → slashers → slashes → sashes → ashes → shes → hes → splashes → plashes → lashes → ashes → shes → hes → splashes → plashes → lashes → lases → lass → ass → splashes → plashes → lashes → lases → lass → las → splashes → plashes → pashes → ashes → shes → hes → splashes → plashes → pashes → pases → pass → ass → splashes → plashes → pashes → pases → pass → pas → splashes → slashes → lashes → ashes → shes → hes → splashes → slashes → lashes → lases → lass → ass → splashes → slashes → lashes → lases → lass → las → splashes → slashes → sashes → ashes → shes → hes |
scrappers |
→ crappers → rappers → rapers → rapes → raps → ras → crappers → rappers → rapers → rapes → raps → ras → scrapers → scrapes → crapes → rapes → raps → ras → scrapers → scrapes → crapes → craps → raps → ras → scrapers → scrapes → scraps → craps → raps → ras → scrapers → scrapes → crapes → rapes → raps → ras → scrapers → scrapes → crapes → craps → raps → ras → scrapers → scrapes → scraps → craps → raps → ras |
chorusses |
→ choruses → chouses → houses → hoses → oses → oes → choruses → chouses → houses → hoses → hoes → oes → choruses → chouses → houses → hoses → hoes → hes → choruses → chouses → choses → hoses → oses → oes → choruses → chouses → choses → hoses → hoes → oes → choruses → chouses → choses → hoses → hoes → hes → choruses → chouses → choses → coses → oses → oes → choruses → chouses → choses → coses → coss → cos → choruses → chouses → houses → hoses → oses → oes → choruses → chouses → houses → hoses → hoes → oes → choruses → chouses → houses → hoses → hoes → hes → choruses → chouses → choses → hoses → oses → oes → choruses → chouses → choses → hoses → hoes → oes → choruses → chouses → choses → hoses → hoes → hes → choruses → chouses → choses → coses → oses → oes → choruses → chouses → choses → coses → coss → cos |
breachers |
→ breaches → braches → braces → braes → bras → ras → breaches → braches → braces → braes → bras → bas |
launchers | → launches → launces → lances → laces → lacs → las |
Pushing Further
I made an arbitrary starting point of three-letter words near the beginning. Almost as an afterthought, I decided to do the run again, but based on two-letter words.
I expected to get poorer results, with shorter maximum words (or at the least, fewer of them). To my surprise, while I did get fewer three- to seven-letter words, by the time it got to eight-letter words, it had stabilized.
I got exactly the same list of nine-letter words coming out!
How Many Words Can Be Produced From Two-Letters?
Word Length | Number of Words That Can Be “Laddered” from Two-Letter Words |
---|---|
1 | N/A |
2 | 47 (All of them) |
3 | 183 |
4 | 474 |
5 | 702 |
6 | 579 |
7 | 338 |
8 | 131 |
9 | 13 |
10 | 0 |
All Nine-Letter To Two-Letter Chemical Ladders
pricklier |
→ prickier → pickier → picker → piker → pier → per → er → prickier → pricier → pricer → prier → pier → per → er → prickier → pricker → picker → piker → pier → per → er → prickier → pricker → pricer → prier → pier → per → er |
upraisers |
→ praisers → praises → prises → pries → pies → pes → es → praisers → praises → prises → pries → pies → pis → is → praisers → praises → prises → priss → piss → pis → is → praisers → praises → prases → pases → pass → ass → as → praisers → praises → prases → pases → pass → pas → as → uprisers → uprises → prises → pries → pies → pes → es → uprisers → uprises → prises → pries → pies → pis → is → uprisers → uprises → prises → priss → piss → pis → is → upraises → praises → prises → pries → pies → pes → es → upraises → praises → prises → pries → pies → pis → is → upraises → praises → prises → priss → piss → pis → is → upraises → praises → prases → pases → pass → ass → as → upraises → praises → prases → pases → pass → pas → as → upraises → uprises → prises → pries → pies → pes → es → upraises → uprises → prises → pries → pies → pis → is → upraises → uprises → prises → priss → piss → pis → is |
broachers |
→ broaches → braches → braces → braes → bras → ras → as → broaches → braches → braces → braes → bras → bas → as |
saltiness |
→ saltines → salines → alines → lines → lies → lis → is → saltines → salines → alines → lines → lins → ins → is → saltines → salines → alines → lines → lins → lis → is |
confiners |
→ confines → conines → conies → cones → ones → oes → es → confines → conines → conies → cones → ones → oes → os → confines → conines → conies → cones → ones → ons → os → confines → conines → conies → cones → cons → ons → os → confines → conines → conies → cones → cons → cos → os → confines → conines → conins → coins → cons → ons → os → confines → conines → conins → coins → cons → cos → os → confines → conines → conins → conns → cons → ons → os → confines → conines → conins → conns → cons → cos → os → confines → conines → conins → conns → cons → ons → os → confines → conines → conins → conns → cons → cos → os |
smaltines |
→ saltines → salines → alines → lines → lies → lis → is → saltines → salines → alines → lines → lins → ins → is → saltines → salines → alines → lines → lins → lis → is |
caressers |
→ caresses → cresses → cesses → esses → eses → ess → es → caresses → cresses → cesses → esses → eses → ess → es |
sheathers |
→ heathers → heaters → haters → hates → hats → has → as → sheathes → sheaths → heaths → heths → hehs → hes → es → sheathes → sheaths → heaths → heats → hats → has → as |
splashers |
→ plashers → lashers → lasers → lases → lass → ass → as → plashers → lashers → lasers → lases → lass → las → as → plashers → lashers → lashes → ashes → shes → hes → es → plashers → lashers → lashes → lases → lass → ass → as → plashers → lashers → lashes → lases → lass → las → as → plashers → plashes → lashes → ashes → shes → hes → es → plashers → plashes → lashes → lases → lass → ass → as → plashers → plashes → lashes → lases → lass → las → as → plashers → plashes → pashes → ashes → shes → hes → es → plashers → plashes → pashes → pases → pass → ass → as → plashers → plashes → pashes → pases → pass → pas → as → slashers → lashers → lasers → lases → lass → ass → as → slashers → lashers → lasers → lases → lass → las → as → slashers → lashers → lashes → ashes → shes → hes → es → slashers → lashers → lashes → lases → lass → ass → as → slashers → lashers → lashes → lases → lass → las → as → slashers → slashes → lashes → ashes → shes → hes → es → slashers → slashes → lashes → lases → lass → ass → as → slashers → slashes → lashes → lases → lass → las → as → slashers → slashes → sashes → ashes → shes → hes → es → splashes → plashes → lashes → ashes → shes → hes → es → splashes → plashes → lashes → lases → lass → ass → as → splashes → plashes → lashes → lases → lass → las → as → splashes → plashes → pashes → ashes → shes → hes → es → splashes → plashes → pashes → pases → pass → ass → as → splashes → plashes → pashes → pases → pass → pas → as → splashes → slashes → lashes → ashes → shes → hes → es → splashes → slashes → lashes → lases → lass → ass → as → splashes → slashes → lashes → lases → lass → las → as → splashes → slashes → sashes → ashes → shes → hes → es |
scrappers |
→ crappers → rappers → rapers → rapes → raps → ras → as → crappers → rappers → rapers → rapes → raps → ras → as → scrapers → scrapes → crapes → rapes → raps → ras → as → scrapers → scrapes → crapes → craps → raps → ras → as → scrapers → scrapes → scraps → craps → raps → ras → as → scrapers → scrapes → crapes → rapes → raps → ras → as → scrapers → scrapes → crapes → craps → raps → ras → as → scrapers → scrapes → scraps → craps → raps → ras → as |
chorusses |
→ choruses → chouses → houses → hoses → oses → oes → es → choruses → chouses → houses → hoses → oses → oes → os → choruses → chouses → houses → hoses → hoes → oes → es → choruses → chouses → houses → hoses → hoes → oes → os → choruses → chouses → houses → hoses → hoes → hes → es → choruses → chouses → choses → hoses → oses → oes → es → choruses → chouses → choses → hoses → oses → oes → os → choruses → chouses → choses → hoses → hoes → oes → es → choruses → chouses → choses → hoses → hoes → oes → os → choruses → chouses → choses → hoses → hoes → hes → es → choruses → chouses → choses → coses → oses → oes → es → choruses → chouses → choses → coses → oses → oes → os → choruses → chouses → choses → coses → coss → cos → os → choruses → chouses → houses → hoses → oses → oes → es → choruses → chouses → houses → hoses → oses → oes → os → choruses → chouses → houses → hoses → hoes → oes → es → choruses → chouses → houses → hoses → hoes → oes → os → choruses → chouses → houses → hoses → hoes → hes → es → choruses → chouses → choses → hoses → oses → oes → es → choruses → chouses → choses → hoses → oses → oes → os → choruses → chouses → choses → hoses → hoes → oes → es → choruses → chouses → choses → hoses → hoes → oes → os → choruses → chouses → choses → hoses → hoes → hes → es → choruses → chouses → choses → coses → oses → oes → es → choruses → chouses → choses → coses → oses → oes → os → choruses → chouses → choses → coses → coss → cos → os |
breachers |
→ breaches → braches → braces → braes → bras → ras → as → breaches → braches → braces → braes → bras → bas → as |
launchers | → launches → launces → lances → laces → lacs → las → as |
Run-Time
The run-time to do all of this was trivial; so trivial, I never actually timed it accurately.
It took about 3 seconds to read in the file, and generate both sets of dictionaries. Recursing through to print out the results took another 15 seconds or so.
All of this is on an aging machine, running Python, with no attempts to optimise.
Comment by Mr Rohan on August 18, 2008
Welcome back !!
Comment by Alastair on August 20, 2008
Nice work Julian but I’m confused a bit. You say you read the words into an array of dictionaries. I’m assuming that when you say “dictionary” you’re using using python terminology for what might more generally be called an associative array? If so, exactly what are the keys and values? I can’t think of what you might be putting into the values of the associative array, so perhaps you are using it more like a set, is this right?
Also: “es” is a word?
Comment by Julian on August 20, 2008
OMG! I didn’t read the specs right! How embarrassment!
I assumed Chemical Word Ladders worked like other Word Ladders that I have done by hand since I was a kid, and the (grammatically dodgy) wording given above the example matches that.
But I just looked at the example, and it doesn’t match!
Rather than adding one letter each time, they are substituting one chemical symbol or reparsing the whole word as a different set of chemical symbols each time.
It doesn’t even get longer in each line. It isn’t a ladder, it is a snake! You could get loops!
In a way, I am glad I didn’t notice, as I would have probably walked away from it if there wasn’t a proper “this is the longest answer, the puzzle is now solved.”.
Comment by Julian on August 20, 2008
Alastair,
There were two arrays. (In Python terms, they were actually lists, but I treated them as fixed-length arrays.)
The first array just held all of the chemical words. Logically, it was an array of sets of words. The index to the array was the length of the word. Each set held all the words of a given length.
Despite the fact it was just a set, I did use the Python dictionary type (which, as you say, is an associative array). The key was the word, the value was junk. This isn’t very space efficient, but my loose reasoning was I wanted to copy one of these collections over to the other array, and didn’t want to bother to iterate through it to make the types match. I don’t find this argument particularly strong, and would consider it more carefully in production code.
The second array held all of the words that can appear in a ladder (i.e. can be built from short words). Again, the index represented the word length.
This time, the Python dictionary mapped from the word in the ladder to a list of words that it could be built on.
So,
allLadderedWordsByLength[9]['upraisers'] == ['praisers', 'uprisers', 'upraises']
The special cases: For the minimum-length words, the dictionary contained legal keys but undefined values, copied from the previous structure. For smaller than minimum-length words, the dictionaries in the array were undefined.
And, is “es” a word? Some would say no it isn’t, but I emphatically say es it is. In fact, I was saying it only esterday.
Mark Nandor used the public-domain Enhanced North American Benchmark LExicon (ENABLE). (Wikipedia has no entry, and I would add one myself but I can’t find any reliable original sources, apart from the author’s email address.)
Comment by John Y. on August 20, 2008
Alastair: I am dismayed that “es” is accepted as a word, but it is accepted in official Scrabble tournaments, which Mr. Nandor did say was the basis for the word list. Anyway, the exercise of course was just to programmatically generate ladders from an arbitrary set of rungs, where the rungs are finite sequences of characters. I try to focus on that aspect so as not to get too worked up over language issues.
Julian: You’ve listed duplicate ladders. In particular, I found “caressers” due to Alastair’s comment. Also I happened to notice some in “scrappers”. Perhaps wherever there are adjacent duplicate letters, your program has allowed dual paths.
I was also going to suggest that you’ve left out a word in your definition of “chemical word ladders” but I see your quote was accurate, and that the omission was Mr. Nandor’s. Actually, not only does there seem to be a word missing, but I find the phrase “one character at a time” suspect, given the example. I mean, that example seems to go out of its way to demonstrate that you can replace one element with another (possibly changing two letters in one step, without altering the overall length) or even one element with two (CoAt to COAt).
Frankly, I can’t figure out what all the rules really are. I mean, it seems the overall length must be monotonically increasing by no more than one letter at a time, and of course each rung must be a member of the predefined word list. But under what conditions can you replace one element with two? One data point isn’t enough for my feeble analytical abilities. (But I would say it is at least safe to substitute a single two-letter element with two one-letter elements which together spell the two-letter element.)
So the rules you’ve chosen, while much clearer and more rigorous than the original definition and example, seem not to coincide with at least the example, and possibly not the definition either, depending on the missing word (which could be “adds” or “changes” for example, where the latter implies both replacement and insertion are allowed)
and whether “character” really means letter or element.
And if indeed ladder-building was meant fundamentally to be a series of element operations rather than letter operations, then that would also change the complexion of my duplicate comment, since a letter-centric treatment would consider CoAt and COAt duplicates.
(This reminds me of the Four Fours problem: ill-defined according to my sensibilities, with several plausible variants, each of which makes a light and slightly different Python exercise.)
Comment by John Y. on August 20, 2008
*sigh* Naturally, I had to compose my comment at the same time Julian was already responding, thus rendering about 85% of my post redundant.
Comment by Julian on August 20, 2008
John,
You get bonus points for being far more perceptive than me. I should have noticed far earlier (i) the missing word in the description, (ii) the example not matching my expectations, and (iii) the duplicates in my results.
You are absolutely right. I should have made the list of shorter words (the value of the dictionaries in the second array) into a set, to avoid this.
Also, I should have documented that I decided early on that words with multiple parsings should not appear as separate paths, but are merged into one ladder. Hence, everything is in lower-case, with no distinction between CoAt and COAt. This doesn’t match the example given.
Comment by Julian on August 20, 2008
WordPress plug-in idea, based on John’s experience…
Include a hidden “version field” in the comment submission form. At the time the comment is submitted, compare the version field against the current version. If it doesn’t match, warn the user that another comment has been filed in the meantime, and give them a chance to reconsider their submission.
(Gee, I hope no-one else is submitting this idea at exactly the same time that I write it.)
Comment by Alastair on August 21, 2008
Re: WordPress plug-in idea
I’ve noticed that Gmail does something similar to this. If you’re writing a reply to a group email and another message in the thread arrives, you’ll be notified. Quite handy actually.
Comment by Mark on September 2, 2008
Greetings.
Thanks, Julian, for doing the work, and to others for some analysis. I should have checked my anonymous reader’s suggestion more carefully before including the problem!
I’m open to suggestion, but what do folks think of the following, which basically follows Lewis Carroll’s original rules for the Word Ladder game? At each step, the player must do one of the following:
1) add a chemical symbol
2) subtract a chemical symbol
3) change a chemical symbol
4) rearrange all of they symbols
Seems a bit much, to me, and I think most Word Ladders nowadays do not allow so many changes. What about: at each step, the player must do one of the following:
1) add a chemical symbol
2) change a chemical symbol
3) split a two-character symbol into two one-character symbols
This still allows for everything in the example, though I’m not wedded to the example if a cleaner set of rules would preclude it. For instance, there would be fewer examples of successful ladders, but circular words would be eliminated if we disallowed (2) above. Or it could be changed to “a one-character symbols can change to two-character symbol.” I believe that this would make it so that at each step, EITHER the word OR the number of chemical symbols would be strictly increasing.
Any thoughts on good rules?
Comment by Julian on September 4, 2008
Mark,
Lewis Carroll invented Word Ladders? Cool! I had no idea.
You raise some interesting questions about the rules. I can see that there are several variants on the rules, and I don’t claim that any of the rules sets are wrong, but I definitely have some preferences.
The first dimension is: Do we allow subtraction?
Lewis Carrol says yes, I argue no.
If we allow subtraction, we allow cycles, as Mark suggests. Even if we put a ban on cycles, we still allow arbitrary-length excursions around the word-space, in an attempt to artificially lengthen the path.
If we have a start and end word specified, we can avoid this by saying the goal is to find the shortest path from one word to the other. I am happy with subtraction in this case (and this was the original game, by Carroll).
However, without such goals specified, our aim becomes to find the longest path. Letting us increase that path length by bouncing around backwards and forwards between (say) 4-letter and 5-letter words seems to be cheating to me.
The second dimension is: Do we allow anagrams?
Mark suggests not. I agree from purely pragmatic reasons; it is going to make the search space considerably (but probably not insurmountably) larger.
If we did allow anagrams, I would like to rank solutions that use re-shuffling less higher than solutions that use it more. It seems somehow purer to maintain the letter order.
The third dimension is: Do we allow re-parsing of the letters?
If reparsing is allowed, it shouldn’t be counted as a regular step – you shouldn’t be allowed to do two reparsings, and (like anagrams) reparsing shouldn’t be rewarded, but if anything ranked lower than non-reparsing solutions.
I assumed reparsing was allowed, and didn’t count as a step. I am open to other opinions here.
The fourth dimension is: Do we add letters or chemical symbols in a single step?
I had assumed letters, but I am open to either way.
Comment by Wes on October 29, 2008
So, my program is still in the A’s calculating all of the word ladders starting with ache (depth-first traversing through the trees recursively), of which there are a significant number. Output is up to greater than 200 megs of text.
I emailed Mark my progress after noticing his discreet challenge, and mentioned how there is a very large number of word ladders. He pointed me here, now that there was some discussion about this topic.
I agree that anagrams and subtractions are probably a bad idea, considering the space is already quite large. I’m considering rewriting it to not allow repeats that are just different by reparsing/splitting, to limit the space.
My rules are basically what you guys defined:
-allow single letter changes
-allow single letter additions
-allow splitting/reparsing
-disallow cycles within a ladder
If I let my program finish running, and it doesn’t eat up the rest of my 10 gigs of disk space on my main drive… I’ll probably zip it up and put it on a server somewhere. Maybe Mark would put it on his page.
Here’s one “ache” ladder for everyone’s enjoyment:
AcHe
AcHY
AsHY
WAsHY
WAsPY
WAsPS
HAsPS
HArPS
HArPY
SHArPY
SHArNY
SHArNS
SHArKS
CHArKS
CHIrKS
CHICKS
CHeCKS
CHoCKS
CHOCKS
CHOOKS
CrOOKS
BrOOKS
BrOCKS
BrICKS
BrICKY
PrICKY
PrICeY
PrICeS
PrICKS
CrICKS
ClICKS
ClInKS
CHInKS
CHINKS
CHINaS
CHINeS
CHINoS
CHICoS
CHICOS
CHInOS
CHInOs
CHICOs
CHINOs
CHINAs
CHINEs
CHIVEs
CHInEs
ClInEs
ClINEs
ClONEs
ClONEr
ClOsEr
ClOSEr
ClOSEs
CHOSEs
CHOKEs
CHOsEs
CHAsEs
CHAsSEs
CHEsSEs
CrEsSEs
CrOsSEs
CrOSSEs
CrOSSEr
CrOSiEr
CrOSIEr
PrOSIEr
PrOSiEr
PrOSPEr
PrOsPEr
PrOsIEr
CrOsIEr
CrOsSEr
CrAsSEr
ClAsSEr
ClAsSEs
ClAsHEs
CrAsHEs
BrAsHEs
BrAcHEs
BeAcHEs
BReAcHEs
BReAtHEs
BReAtHEr
BReAcHEr
PReAcHEr
PReAcHEs
UPReAcHEs
Comment by Lance on March 24, 2011
Your “word ladder” examples have changes of more than one character. They are not true word ladders.