ans = ["AA"] have = set(["AA"]) def f(): if(len(have) == 26*26): for i in ans: print(i) exit() head = ans[-1][-1] for i in range(26): new = chr(ord("A") + i) if(head + new in have):continue ans.append(head + new) have.add(head + new) f() have.remove(head + new) ans.pop() f()