BFS with pattern-based neighbor finding.
function ladderLength(beginWord, endWord, wordList): wordSet = set(wordList) if endWord not in wordSet: return 0 queue = [(beginWord, 1)] visited = {beginWord} while queue: word, length = queue.pop(0) if word == endWord: return length for i in range(len(word)): for c in 'abcdefghijklmnopqrstuvwxyz': newWord = word[:i] + c + word[i+1:] if newWord in wordSet and newWord not in visited: visited.add(newWord) queue.append((newWord, length + 1)) return 0
time.