word graph (one-letter edges)
hit
hot
dot
lot
dog
log
cog
BFS queue
front →
(empty)
← backWords as a graph + BFS for the shortest ladder
▸1build graph: edge(a, b) if a, b differ by one letter2queue = [beginWord]; dist[beginWord] = 1; visited = {beginWord}3while queue: u = queue.pop_front() // dequeue (level order)4 for v in neighbours(u):5 if v in visited: continue // already shortest6 dist[v] = dist[u] + 1; enqueue v // first time = shortest7 if u == endWord: return dist[u] // BFS ⇒ shortest ladder8return 0 // unreachable
state
- beginhit
- endcog
- goalfewest words