#!/usr/bin python3

import string

MAX_N = 5000
VERIFY = False


def hamming(x, y):
    return sum(a != b for a, b in zip(x, y))


def fiddle(word, max_letter=4):
    """Return all words hamming distance 1 away from word."""
    for i, c in enumerate(word):
        for letter in string.ascii_lowercase[:max_letter]:
            if c != letter:
                yield word[:i] + letter + word[i + 1 :]


def solve(word_len):
    words = ["a" * word_len]
    banned = set(words)
    while len(words) < MAX_N:
        word = words[-1]
        added = False
        for nxt in fiddle(word):
            if nxt not in banned and not added:
                words.append(nxt)
                added = True
            banned.add(nxt)

        if not added:
            break

    return words


def main():
    words = solve(8)
    n = int(input())
    assert n <= len(words)
    for word in words[:n]:
        print(word)

    if VERIFY:
        for i, x in enumerate(words):
            for j, y in enumerate(words):
                if abs(i - j) <= 1:
                    assert abs(i - j) == hamming(x, y)
                else:
                    assert hamming(x, y) > 1


if __name__ == "__main__":
    main()
