The following is the answers from https://leetcode.com/discuss/24191/defaultdict-for-traceback-and-easy-writing-lines-python-code. Special thanks to @tusuzi. However, I am wondering if it is possible to generate the final res array without using the list generator. I have spend lots of time on it but still cannot find a solution. Any help will be deeply appreciated.

```
class Solution:
# @param start, a string
# @param end, a string
# @param dict, a set of string
# @return a list of lists of string
def findLadders(self, start, end, dic):
dic.add(end)
level = {start}
parents = collections.defaultdict(set)
while level and end not in parents:
next_level = collections.defaultdict(set)
for node in level:
for char in string.ascii_lowercase:
for i in range(len(start)):
n = node[:i]+char+node[i+1:]
if n in dic and n not in parents:
next_level[n].add(node)
level = next_level
parents.update(next_level)
res = [[end]]
while res and res[0][0] != start:
res = [[p]+r for r in res for p in parents[r[0]]]
return res
```