n = int(input())

A= 'a'

# 文字数を増やして, その各々の元に対して文字を追加する.

for _ in range(n - 1):

    A = {a + s for a in A for s in a + chr(ord(max(a)) + 1)}

    # print(A)

# 最後にsortして調整する.

#print(*A, sep = '\n')

print(*sorted(A), sep='\n')

n = int(eval(input()))

A = ['a']

S = 'abcdefghij'

for _ in range(n-1):

    B = []

    for a in A:

        for s in S[:len(set(a)) + 1]:

            B.append(a + s)

    A = B[::]

print(('\n'.join(A)))
n = int(input())
A = "a"
# 文字数を増やして, その各々の元に対して文字を追加する.
for _ in range(n - 1):
    A = {a + s for a in A for s in a + chr(ord(max(a)) + 1)}
    # print(A)
# 最後にsortして調整する.
# print(*A, sep = '\n')
print(*sorted(A), sep="\n")

n = int(eval(input()))
A = ["a"]
S = "abcdefghij"
for _ in range(n - 1):
    B = []
    for a in A:
        for s in S[: len(set(a)) + 1]:
            B.append(a + s)
    A = B[::]
print(("\n".join(A)))

-n = int(input()) -A = "a" -# 文字数を増やして, その各々の元に対して文字を追加する. +n = int(eval(input())) +A = ["a"] +S = "abcdefghij" -    A = {a + s for a in A for s in a + chr(ord(max(a)) + 1)} -    # print(A) -# 最後にsortして調整する. -# print(*A, sep = '\n') -print(*sorted(A), sep="\n") +    B = [] +    for a in A: +        for s in S[: len(set(a)) + 1]: +            B.append(a + s) +    A = B[::] +print(("\n".join(A)))