N = int(eval(input()))



# 桁数を決める

tmp = 0

digit = 1

tmp += pow(26, digit)

while N > tmp:

    digit += 1

    tmp += pow(26, digit)



order = N - (tmp - pow(26, digit)) - 1

X = [0] * digit

cur = digit - 1

while order > 0:

    X[cur] = order % 26

    order //= 26

    cur -= 1



# X = list(reversed(X))

# print(X)



a = ord('a')

ans = []

for x in X:

    c = chr(a + x)

    ans.append(c)



print((''.join(ans)))

N = int(eval(input()))



# 桁数を決める

digit = 1  # 桁数

num = pow(26, digit) # その桁数での最大番号

while num < N:

    digit += 1

    num += pow(26, digit)



# その桁数内でのNの順番を0-indexで求める.

# (つまり, 2桁であれば'aa' -> 0, 'zz' -> 675 となる.)

order = N - (num - pow(26, digit)) - 1



# orderを26進数表記する.

# 例えば, 3桁でorder=28のとき, X = [0, 1, 2]

X = [0] * digit

cur = digit - 1

while order > 0:

    X[cur] = order % 26

    order //= 26

    cur -= 1



# 各桁の文字は'a' + Xiとなる

ans = []

a = ord('a')

for x in X:

    c = chr(a + x)

    ans.append(c)



print((''.join(ans)))
N = int(eval(input()))
# 桁数を決める
tmp = 0
digit = 1
tmp += pow(26, digit)
while N > tmp:
    digit += 1
    tmp += pow(26, digit)
order = N - (tmp - pow(26, digit)) - 1
X = [0] * digit
cur = digit - 1
while order > 0:
    X[cur] = order % 26
    order //= 26
    cur -= 1
# X = list(reversed(X))
# print(X)
a = ord("a")
ans = []
for x in X:
    c = chr(a + x)
    ans.append(c)
print(("".join(ans)))

N = int(eval(input()))
# 桁数を決める
digit = 1  # 桁数
num = pow(26, digit)  # その桁数での最大番号
while num < N:
    digit += 1
    num += pow(26, digit)
# その桁数内でのNの順番を0-indexで求める.
# (つまり, 2桁であれば'aa' -> 0, 'zz' -> 675 となる.)
order = N - (num - pow(26, digit)) - 1
# orderを26進数表記する.
# 例えば, 3桁でorder=28のとき, X = [0, 1, 2]
X = [0] * digit
cur = digit - 1
while order > 0:
    X[cur] = order % 26
    order //= 26
    cur -= 1
# 各桁の文字は'a' + Xiとなる
ans = []
a = ord("a")
for x in X:
    c = chr(a + x)
    ans.append(c)
print(("".join(ans)))

-tmp = 0 -digit = 1 -tmp += pow(26, digit) -while N > tmp: +digit = 1  # 桁数 +num = pow(26, digit)  # その桁数での最大番号 +while num < N: -    tmp += pow(26, digit) -order = N - (tmp - pow(26, digit)) - 1 +    num += pow(26, digit) +# その桁数内でのNの順番を0-indexで求める. +# (つまり, 2桁であれば'aa' -> 0, 'zz' -> 675 となる.) +order = N - (num - pow(26, digit)) - 1 +# orderを26進数表記する. +# 例えば, 3桁でorder=28のとき, X = [0, 1, 2] -# X = list(reversed(X)) -# print(X) +# 各桁の文字は'a' + Xiとなる +ans = [] -ans = []