n = int(input())
chars = ["a","b","c","d","e","f","g","h","i","j"]
def ds(s,depth,ind):
    for i in range(ind): #初回→1個
        if depth == n:
            print(s)
            return
        next_chr = chars[i]
        # for j in range(ind + 1):
        ds(s + next_chr, depth + 1, ind = i + 2)
    return
ds("",0,1)


# for i in range(n):



# k = (n - 1)
# # n 桁 → 関係は nC2 * 2個の関係がありうる
# # abc とあったら a = b とか a =cとか
# while k != 0:
#
#     for i in range(2 ** k):  # 2**k個の制約がある k回目 → 2 ** (k) の束縛がある
#         for i1 in range(n - k - 1, n):  # i1番目のアルファベット
#             #着目する文字が0文字目 = 1文字目  0文字目 = 2文字目 って感じになっていく
#             for i2 in range(i1 + 1, n):  # i2番目のアルファベット
#                 ans = ""
#                 # 1→等しい 0 → 等しくない
#                 # 等しくない場合 chr + 1をする
#                 next_chr = "a"
#                 for j in range(1 , n): #追加する 番目 1番目に追加とか
#                     ralation = i2 - i1 -1 #番目の関係
#                     if ralation < 0:
#                         pass
#                     elif  ((ralation  >> j) & 1): #束縛されていたら
#                         next_chr = chr(ord(next_chr) + 1)
#                 ans += next_chr
#             print(ans)#
#
#     k -=1
#
#
