# import bisect
# import copy
# import fractions
# import math
# import numpy as np
# from collections import Counter, deque
# from itertools import accumulate,permutations, combinations,combinations_with_replacement,product

def resolve():
    l=[]
    N=int(input())
    bigbag=[]
    for i in range(2 ** (N)):
        bag = []
        for j in range(N):  # このループが一番のポイント
            if ((i >> j) & 1):  # 順に右にシフトさせ最下位bitのチェックを行う
                bag.append('b')
            else:
                bag.append('a')# フラグが立っていたら bag に果物を詰める
        bigbag.append(bag)
    bigbag.sort()
    for i in range(2**(N-1)):
        print(''.join(bigbag[i]))


resolve()