Question and Answer from L4-M1
from collections import deque
def one_letter_diff(w1, w2):
diff = 0
for a, b in zip(w1, w2):
if a != b:
diff += 1
if diff > 1:
return False
return diff == 1
def word_ladder(start, end, dictionary):
dictionary = set(dictionary)
if end not in dictionary:
return None
queue = deque([[start]])
visited = {start}
while queue:
path = queue.popleft()
last = path[-1]
if last == end:
return path
for word in list(dictionary):
if word not in visited and one_letter_diff(last, word):
visited.add(word)
queue.append(path + [word])
return None
# --- Robust input reading ---
words = input().strip().split()
start, end = words[0], words[1]
dictionary = words[2:]
result = word_ladder(start, end, dictionary)
if result:
print(" ".join(result))
else:
print("null")