1000000000000001 dogs suddenly appeared under the roof of Roger's house, all of which he decided to keep. The dogs had been numbered 1 through 1000000000000001, but he gave them new names, as follows:
 - the dogs numbered 1,2,\cdots,26 were respectively given the names a, b, ..., z;
 - the dogs numbered 27,28,29,\cdots,701,702  were respectively given the names aa, ab, ac, ..., zy, zz;
 - the dogs numbered 703,704,705,\cdots,18277,18278  were respectively given the names aaa, aab, aac, ..., zzy, zzz;
 - the dogs numbered 18279,18280,18281,\cdots,475253,475254  were respectively given the names aaaa, aaab, aaac, ..., zzzy, zzzz;
 - the dogs numbered 475255,475256,\cdots  were respectively given the names aaaaa, aaaab, ...;
 - and so on.
To sum it up, the dogs numbered 1, 2, \cdots were respectively given the following names:
a, b, ..., z, aa, ab, ..., az, ba, bb, ..., bz, ..., za, zb, ..., zz, aaa, aab, ..., aaz, aba, abb, ..., abz, ..., zzz, aaaa, ...
Now, Roger asks you:
"What is the name for the dog numbered N?"

-----Constraints-----
 - N is an integer.
 -  1 \leq N \leq 1000000000000001

-----Input-----
Input is given from Standard Input in the following format:
N

-----Output-----
Print the answer to Roger's question as a string consisting of lowercase English letters.

-----Sample Input-----
2

-----Sample Output-----
b


Difficulty: introductory

Starter code:

Solutions:
N = int(input())
al = [chr(ord('a') + i) for i in range(26)]

ans = ''
while N>0:
    N -=1
    ans += al[N%26]
    N //= 26

print(ans[::-1])

n = int(input())
ans = list()
x = ord("a")
while n > 0:
    y = n % 26
    if y == 0:
        y = 26
    n -= y
    y -= 1
    ans.append(chr(x + y))
    n //= 26
print(("".join(ans[::-1])))


import string
abc = list(string.ascii_lowercase)

n = int(input())
list1 = []

if n <= 26:
  print(abc[n-1])
  return
  
while n > 26:
  d = n//26
  r = n % 26
  if r == 0:
    d -= 1
    r = 26
  list1.append(abc[r-1])
  n = d


list2 = (list1 + [abc[d-1]])

list2.reverse()
print(''.join(list2))

n=int(input())
a="zabcdefghijklmnopqrstuvwxy"
b=""
while n/26>0:
  b=a[n%26]+b
  n=(n-1)//26
print(b)



def main():
    N = int(input())
    digits = []

    while N != 0:
        digits.append(N % 26)
        if digits[-1] == 0:
            digits[-1] = 26
            N //= 26
            N -= 1
        else:
            N //= 26
    digits.reverse()
    for d in digits:
        print(chr(96 + d), end='')
    print()  # 改行


def __starting_point():
    main()

__starting_point()

import math

# one = 1000000000000001
dict={1:"a",2:"b",3:"c",4:"d",5:"e",6:"f",7:"g",8:"h",9:"i",10:"j",
        11:"k",12:"l",13:"m",14:"n",15:"o",16:"p",17:"q",18:"r",19:"s",20:"t",
        21:"u",22:"v",23:"w",24:"x",25:"y",26:"z"}

n=int(input())
ans = ""

while n:
    ans = str(dict[(n-1)%26+1]) + ans
    n=(n-1)//26

print(ans)


N = int(input())
l = []
while N:
    N -= 1
    l.append(chr(97+(N % 26)))
    N //= 26

print(("".join(l[::-1])))


n = int(input())
ret = ""
alphabet = list("abcdefghijklmnopqrstuvwxyz")
while n:
  n -= 1
  n, mod = divmod(n, 26)
  ret += alphabet[mod]
print(ret[::-1])

N = int(input())

ans = ''
while(N > 0):
  N -= 1
  _i = N % 26
  ans = chr(ord('a') + _i) + ans
  N //= 26
  
print(ans)

n = int(input())
c = 1
s = ""
while n > 0:
    s += (chr(ord('a') + (n-1) % 26))
    n = (n-1)//26
print(s[::-1])

n = int(input())
n2 = n
i = 1
while True:
    if (n2 > 26**i):
        n2 = n2 - 26**i
        i = i + 1
    else:
        break

lst = []

for j in range(i - 1):
    k = j + 1
    n = n - 26**k
n = n - 1
for j in range(i):
    k = i - j - 1
    x = n//(26**k)
    lst.append(x)
    n = n - 26**k*x
for j in range(len(lst)):
    if (j != len(lst) - 1):
        print(chr(int(97 + lst[j])), end = '')
    else:
        print(chr(int(97 + lst[j])))


import string
abc = list(string.ascii_lowercase)

n = int(input())
list1 = []

if n <= 26:
  print((abc[n-1]))
  return
  
while n > 26:
  d = n//26
  r = n % 26
  if r == 0:
    d -= 1
    r = 26
  list1.append(abc[r-1])
  n = d


list2 = (list1 + [abc[d-1]])

list2.reverse()
print((''.join(list2)))


N = int(input())

def num2alpha(num):
    if num <= 26:
        return chr(96+num)
    elif num % 26==0:
        return num2alpha(num//26-1)+chr(122)
    else:
        return num2alpha(num//26)+chr(96+num%26)

print(num2alpha(N))

N = int(input())
ans = ''
while N:
    N -= 1
    N, mod = divmod(N, 26)
    ans += chr(ord('a') + mod)
print(ans[::-1])

n = int(input())

Z = ""
sou = "Zabcdefghijklmnopqrstuvwxyz"

N = n
for i in range(100):
    x = N % 26
    ###　余り分ひく
    N -= x

    if x == 0:
        x = 26
        N -= x
    Z += sou[x]

    if N == 0:
        break
    ###　次元落とす
    N //= 26

ans = Z[::-1]
print(ans)

N=int(input())
alpha='abcdefghijklmnopqrstuvwxyz'

ans=''
while 26<N:
    s=(N-1)%26
    ans=alpha[s]+ans
    N=int(N-1)//26
ans=alpha[N-1]+ans
print(ans)

def int_to_str(n):
    if n == 0:
        return "a"
    elif n == 1:
        return "b"
    elif n == 2:
        return "c"
    elif n == 2:
        return "c"
    elif n == 2:
        return "c"
    elif n == 2:
        return "c"
    elif n == 2:
        return "c"
    elif n == 2:
        return "c"
    elif n == 2:
        return "c"

def Base_10_to_n(X, n):
    if (int(X/n)):
        if X%n != 0:
            return Base_10_to_n(int(X/n), n)+chr((X%n)+96)
        else:
            return Base_10_to_n(int(X/n)-1, n)+chr(26+96)
    if(X%n != 0):
        return str(chr(X%n+96))
    else:
        return ""

N = int(input())

s = Base_10_to_n(N,26)
print(s)


N = int(input())

ans = ''

while True:
    n = int(N / 26)
    r = N % 26

    if r == 0:
        r = 26
        n -= 1

    ans = chr(96 + r) + ans
    if n == 0:
        break
    else:
        N = n

print(ans)

n = int(input())
ans = list()
x = ord("a")
while n > 0:
    y = n % 26
    if y == 0:
        y = 26
    y -= 1
    ans.append(chr(x + y))
    n -= y
    n //= 26
print(("".join(ans[::-1])))


n = int(input())

p = list("zabcdefghijklmnopqrstuvwxy")


num = ""

while n > 26:
    a = p[n % 26]
    num += a
    if n % 26 == 0:
        n = n // 26 - 1
    else:
        n = n // 26

num += p[n%26]

new_num = num[::-1]
print(new_num)


n=int(input())
ans=''
while n>0:
  n-=1
  ans+=chr(ord('a')+n%26)
  n//=26
  
print((ans[::-1]))  


N=int(input())
alpha='abcdefghijklmnopqrstuvwxyz'
 
ans=''
while N:
    N-=1
    ans=alpha[N%26]+ans
    N=N//26
print(ans)

A = int(input())
az = 'zabcdefghijklmnopqrstuvwxy'
ans = ''
abc = 'abcdefghijklmnopqrstuvwxyz'

while (A):
  A -= 1
  ans = abc[A % 26] + ans
  A = A // 26
print(ans)

#!/usr/bin/env python3
import string

N = int(input().split()[0])
a_list = list(string.ascii_lowercase)

amari_list = []
n = N
while n > 0:
    n -= 1
    amari = n % 26
    amari_list.append(a_list[amari])
    n = n // 26

ans = "".join(reversed(amari_list))

print(ans)


n = int(input())
b = 26
ans = []
for i in range(1,99):
    if n <= b**i:
        n -= 1
        for j in range(i):
            ans.append(chr(97 + n % b))
            n //= b
        break
    else:
        n -= b ** i
for k in range(1,len(ans)+1):
    print(ans[-k],end="")

a_list = [chr(ord('a') + i) for i in range(26)]
n = int(input())

l_list = []
ans = ''
while n > 0:
    if n % 26 == 0:
        l_list.append(26)
        n = n // 26 - 1
    else:
        l_list.append(n%26)
        n = n // 26
l_list = l_list[::-1]
for i in l_list:
    ans += a_list[i-1]
print(ans)

n = int(input())

s = "abcdefghijklmnopqrstuvwxyz"

ans = ""

while n > 0:
    n -= 1
    ans += s[n % 26]
    n //= 26

print(ans[::-1])

n = int(input())
ans = ""

while n:
    n -= 1
    ans += chr(ord("a") + n%26)
    n //= 26
print(ans[::-1])

N=int(input())
N_26=[]

while N>0:
    N-=1
    N_mod=N%26
    N=N//26
    N_26.append(chr(97+N_mod))
print(("".join(list(reversed(N_26)))))


def main():
    n = int(input())

    alphabets = 'zabcdefghijklmnopqrstuvwxy'
    answer_reversed = ''
    for i in range(100):
        idx = n % 26
        answer_reversed += alphabets[idx]
        if idx == 0:
            n -= 26
        else:
            n -= idx
        if n:
            n = n // 26
        else:
            break
    print((answer_reversed[::-1]))


def __starting_point():
    main()

__starting_point()

N = int(input())
s = 1
t = 0
while N > 26**s + t:
    t += 26**s
    s += 1
N -= t
ans = []
for i in range(s):
    c = 0
    while N > 26**(s-i-1):
        N -= 26**(s-i-1)
        c += 1
    ans.append(chr(97+c))
print("".join(ans))

N=int(input())
ans=''
while N>0 :
  N-=1
  ans += chr(ord('a')+N%26)
  N//=26
print(ans[::-1])

num2alpha = lambda c: chr(c+64)


N = int(input())
degit = 0
temp_degit = 0
top=0

for i in range(1,50):
    temp_degit += 1
    under = top+1
    top += 26**i
    # print(temp_degit)
    # print(under,top)
    if under <= N and N <= top:
        degit = temp_degit
# print(degit)

# print(N%26)
arr =[]
for i in range(degit):
    if N%26==0:
        arr.append(26)
        N -=1
    else:  
        arr.append(N%26)
    N//=26
    # print(N)

rsl=""
# print(arr)
# print(num2alpha(10))
for i in reversed(arr):
    rsl += num2alpha(i)
print(rsl.lower())

N = int(input()) - 1
keta = 1
cumsum = 0
oldcumsum = 0
while True:
  cumsum += 26 ** keta
  if cumsum > N:
    break
  else:
    oldcumsum = cumsum
  keta += 1

N -= oldcumsum
#N -= 1
#print(keta)

name = ''
for k in range(1,keta+1):
  ch_n = N // (26 ** (keta - k))
  ch = chr(ord('a') + ch_n)
  name += ch
  N -= ch_n * (26 ** (keta - k))
print(name)

N = int(input())
Z = 26
retval = ''
while(N>0):
  #print((N-1)%Z)
  retval = chr((N-1)%Z+97)+retval
  N = (N-1)//Z

print(retval)

A = int(input())
az = 'zabcdefghijklmnopqrstuvwxy'
ans = ''

while A / 26 > 0:
  ans = az[A%26] + ans
  A = (A-1) // 26
print(ans)

import sys
from collections import deque, defaultdict, Counter
from itertools import accumulate, product, permutations, combinations
from operator import itemgetter
from bisect import bisect_left, bisect_right
from heapq import heappop, heappush
from math import ceil, floor, sqrt, gcd, inf
from copy import deepcopy
import numpy as np
import scipy as sp

def base_n(n, base):
    if (n - 1) // base:
        return base_n((n - 1) // base, base) + [(n - 1) % base + 1]
    return [(n - 1) % base + 1]

INF = inf
MOD = 1000000007

n = int(input())

tmp = n
res = 0

res = "".join([chr(i + 96) for i in base_n(n, 26)])

print(res)


N = int(input())
lst = "abcdefghijklmnopqrstuvwxyz"

ans = ""
while N > 0:
  ans = lst[(N-1)%26] + ans
  N = (N-1)//26
print(ans)

n = int(input())

ans = ''
# 制約条件は高々 26 の 10 乗なので、取り合えずインデックスを13に設定して回す
for i in range(1, 13):
    if n <= 26**i:
        n -= 1
        for j in range(i):
            ans += chr(ord('a') + n%26)
            n //= 26
        break;
    else:
        n -= 26**i

print(ans[::-1])

n = int(input())
al = 'abcdefghijklmnopqrstuvwxyz'
s = ''
while n:
  n -= 1
  e = n % 26
  s = al[e] + s
  n //= 26
print(s)

N = int(input())
ans_reverse = ""

def num_to_alphabet(n):
  return chr(ord("a") + n)

while N:
  N -= 1
  ans_reverse += num_to_alphabet(N % 26)
  N //= 26
  
print((ans_reverse[::-1]))


# coding=utf-8

def __starting_point():
    N = int(input())
    N -= 1
    ans = []

    while True:
        if N >= 26:
            ans.insert(0, N % 26)
            N = N // 26 -1

        else:
            ans.insert(0, N)
            break

    #print(ans)

    num2alpha = lambda c: chr(c+97)
    for i in range(len(ans)):
        print(num2alpha(ans[i]), end='')

__starting_point()

n = int(input())
l = []
while n:
    n -= 1
    l.insert(0,chr(97 + (n % 26)))
    n //= 26
print((''.join(l)))


N = int(input())
n = N
S = "abcdefghijklmnopqrstuvwxyz"
ans = ""
keta = 1
tw = []
r = 26
l = 1
i = 2
tw.append(l)

while 1:
    if l <= N <= r:
        break
    l, r = r+1, r+26**i
    tw.append(l)
    i += 1
    keta += 1
#print(l,r,keta,tw)

for x in tw[::-1]:
    twp = 26**(keta-1)
    keta -= 1
    #print("twp =",twp,"x =",x)
    a = (N - x) // twp
    #print((N - x) // twp)
    N -= twp*(a+1)
    ans += S[a]
    #print(N)
print(ans)

n = int(input())
nums = []
ans = ""
while n >= 1:
    n -= 1
    ans += chr(ord('a') + n % 26)
    n = n // 26
print(ans[::-1])

N=int(input());S=[]
while N:N-=1;S.append(chr(97+N%26));N//=26
print("".join(S[::-1]))

n = int(input())

ans = ""
while n != 0:
  n -= 1
  ans += chr(ord("a")+n%26)
  n //= 26
print(ans[::-1])

N = int(input())

ans = ' '
while N>0:
    N -= 1
    ans += chr(ord('a')+N%26)
    N = int(N/26)
    
print(ans[::-1])

n = int(input())

ans = ''
while n:
    n -= 1
    ans += chr(ord('a') + n % 26)
    n //= 26

print(ans[::-1])

N = int(input()) - 1

char = list('abcdefghijklmnopqrstuvwxyz')


ans = ''
i = N % 26
N //= 26
ans = char[i] + ans
while N > 0:
    N -= 1
    i = N % 26
    N //= 26
    ans = char[i] + ans

print(ans)
return

n = int(input())
ans = ''
while n:
    n -= 1
    ans += chr(n%26 + 97)
    n = n//26

print(*ans[::-1], sep='')



x,ar=int(input())-1,[]
if(x==0): ar.append('a')
else:
    while(x>0):
        ar.append(chr(97+x%26))
        x//=26
        x=x-1
        if(x==0): ar.append('a')
ar.reverse()
ans=''.join(ar)
print(ans)

n=int(input())
i=1
l=26
while l<n:
  i+=1
  l+=26**i
n-=l-26**i+1
s=""
for k in range(i):
  s+=chr(n%26+ord('a'))
  n//=26
print(s[::-1])

n = int(input())
s = 'abcdefghijklmnopqrstuvwxyz'
ans = ''
while n > 0:
    n -= 1
    ans += s[n%26]
    n //= 26

print(ans[::-1])

n = int(input())
ans = ""
for i in range(1,99):
    if n <= 26**i :
        n -= 1
        for j in range(i):
            ans += chr(ord("a") + n%26)
            n //= 26
        break
    else :
        n -= 26**i
print((ans[::-1]))


n = int(input())

s = "abcdefghijklmnopqrstuvwxyz"
ans = ''
while n > 0:
    n -= 1
    ans = s[n % 26] + ans
    #Floor division
    n //= 26
print(ans)

N = int(input())

S = 0
Length = 0
count = 0
for i in range(1,99):
    count += 1
    S += 26**i
    Length += 1
    if N <= S:
        #print(count)
        break
k = N - S + 26**count
#print(k)
x = k-1
ans = ""
for i in range(Length):
    r = x % 26
    ans += chr(ord("a") + r)
    q = x//26
    x = q

print(ans[: : -1])

n=int(input())
abc="abcdefghijklmnopqrstuvwxyz"
ans=""
while True:
  if n % 26 == 0:
    ans += "z"
    n = (n-1)//26
  else:
    ans += abc[n%26-1]
    n //= 26
  if n == 0:
    print(ans[::-1])
    break

N = int(input())
S = ""
alphabets=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]

while N > 0:
  if N%26 != 0:
    S = alphabets[(N%26)-1] + S
    N = (N-N%26)//26
  else:
    S = alphabets[(N%26)-1] + S
    N = (N-26)//26

print(S)

n=int(input())
l="Xabcdefghijklmnopqrstuvwxyz"
ans=""
while True:
    #あまりを文字に変換する
    #あまりをdに代入する
    d=n%26
    if d==0:
        d=26
    ans+=l[d]
    
    #あまりをnから引いて、次の桁へ
    n-=d
    
    #nが0だったら終了
    if n==0:
        break
        
    #nの更新
    n//=26
    
print(ans[::-1])

N = int(input())
ans = ''
while N > 0:
	N -= 1
	ans += chr(ord('a') + N % 26)
	N //= 26
print(ans[::-1])

n = int(input())
ans = list()
x = ord("a")
while n > 0:
    n -= 1
    ans.append(chr(x + n % 26))
    n //= 26
print(("".join(ans[::-1])))


n=int(input()); s='';
while n>0:
  n-=1; s+=chr(97+n%26); n//=26;
print(s[::-1])

import math
import numpy as np
N = int(input())

ans = []


def calc(a, ans):
    if a <= 26:
        ans.append(a % 27)
        ans.reverse()
        return ans
    elif a % 26 != 0:
        ans.append(a % 26)
        return calc(a // 26, ans)
    else:
        ans.append(26)
        return calc(a // 26 - 1, ans)


ans = calc(N, ans)
for i in range(len(ans)):
    ans[i] = chr(ans[i] + 96)

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


n = int(input())
ans = ''
while n:
  n -= 1
  ans += chr(ord('a') + n % 26)
  n //= 26
print(ans[::-1])

n = int(input())

def change(x):
  for i in range(26):
    if x == i:
      return "abcdefghijklmnopqrstuvwxyz"[i]

r = []

while n >= 1:
  n = n - 1
  r.append(change(n%26))
  #print(n,end=" ")
  #print(change(n%26))
  n = n // 26

s = len(r)
  
for i in range(s):
  print(r[s-1-i], end='')
  

import math

# one = 1000000000000001
dict={1:"a",2:"b",3:"c",4:"d",5:"e",6:"f",7:"g",8:"h",9:"i",10:"j",
        11:"k",12:"l",13:"m",14:"n",15:"o",16:"p",17:"q",18:"r",19:"s",20:"t",
        21:"u",22:"v",23:"w",24:"x",25:"y",26:"z"}

n=int(input())

ans = str(dict[(n-1)%26+1])

n=(n-1)//26
while n:
    ans = str(dict[(n-1)%26+1]) + ans
    n=(n-1)//26

print(ans)


n = int(input())

tmp = n
ans = []

while tmp >= 1:
    tmp -= 1
    #print(tmp,tmp%26)
    ans.append(chr(ord("a")+tmp % 26))
    tmp //= 26
    
print(*ans[::-1],sep="")

N=int(input())
i=N
base=26
Ans=''
st='abcdefghijklmnopqrstuvwxyz'

while i!=0:
  if i>base:
    wkm=i%base
    wk=wkm//(base//26)
    Ans=st[wk-1]+Ans
    if wkm!=0:
      i-=wkm
    else: #余りがないときはbase分を引く
      i-=base
    base=base*26
#    print(i)
  else: #最後は商を頭につける
    base=base//26
    wk=i//base
    Ans=st[wk-1]+Ans
#    print(i)
    i=0
    
print(Ans)


n = int(input())

ans = ""

for i in range(1, 99):
  if n <= 26 ** i:
    n -= 1
    for j in range(i):
      ans += chr(ord("a") + n % 26)
      n //= 26
    break
  else:
    n -= 26 ** i

# reverse
print(ans[::-1])

n = int(input())
ans = ''

while(n):
    n -= 1
    #print('value:',ord('a') + n % 26)
    ans += chr(ord('a') + n % 26)
    n //= 26

print(("".join(list(ans[::-1]))))


def num2alpha(num):
    if num<=26:
        return chr(64+num)
    elif num%26==0:
        return num2alpha(num//26-1)+chr(90)
    else:
        return num2alpha(num//26)+chr(64+num%26)
num = int(input())
print(num2alpha(num).lower())

n=int(input())
abc="abcdefghijklmnopqrstuvwxyz"
ans=""
while True:
  n-=1
  ans += abc[n%26]
  n //= 26
  if n == 0:
    print(ans[::-1])
    break

n = int(input())
abc="abcdefghijklmnopqrstuvwxyz"
ans = ""

while True:
  n -= 1
  m = n % 26
  ans += abc[m]
  n = n // 26
  if n == 0:
    break
    
print((ans[::-1]))


a = int(input())
S =""
l =['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
num = a % 26
while a >0:
    if a%26 !=0:
        S =l[(a%26)-1] + S
        a = (a-a%26)//26
    else:
        S = l[(a%26)-1] + S
        a = (a-26)//26
print(S)



n = int(input())
ans = ""
for i in range(14):
    if n == 0:
        break
    else:
        n -= 1
        ans += chr(ord("a") + n % 26)
        n = n//26

rslt = ans[::-1]
print(rslt)

import string
from collections import deque

number = int(input())
q = (number - 1) // 26
r = number % 26

sss = deque()
while True:
    sss.appendleft(string.ascii_lowercase[r - 1])
    if q == 0:
        break
    else:
        r = q % 26
        q = (q - 1) // 26

print((''.join(list(sss))))


n = int(input())
alf = "0abcdefghijklmnopqrstuvwxyz"
ans = ""

while n != 0:
    x = n%26
    
    if x == 0:
        x = 26
        
    ans += alf[x]
    n -= x
    n //= 26

print(ans[::-1])

n = int(input())
ans = list()
x = ord("a")
while n > 0:
    n -= 1
    ans.append(chr(x + n % 26))
    n //= 26
print(("".join(ans[::-1])))


n=int(input())
ans=""
i=1
while n>0:
    n-=1
    ans+=chr(ord("a")+n%26)
    n//=26
print(ans[::-1])

from collections import deque
n = int(input())
st  = deque()
while n > 0:
    num = (n - 1) % 26
    n = (n - 1) // 26
    st.appendleft(chr(num + 97))
print(*st, sep = "")

N=int(input())
c=0;
while N-26**c>=0:
  N-=26**c
  c+=1

d=[0]*(c-1)

i=0
for i in range(c):
  d.insert(c-1,N%26)
  N=(N-d[i])//26
  i+=1
#print(d)
e=[]
s=''
for i in range(2*c-1):
  e.append(chr(97+d[i]))
  s+=e[i]
print((s[c-1:2*c-1]))
#1000000000000001
#zzzzzz
#321272416


n = int(input())

ans = ""
while n > 0:
  n -= 1
  ans += chr(ord("a") + n%26)
  n //= 26
print(ans[::-1])

def main(N):
    ans = None

    alphabets = []
    for i in range(97, 97+26):
        alphabets.append(chr(i))

    tmp = 0
    for i in range(1, 20):
        if tmp+26**i >= N:
            break
        tmp += 26**i
    N -= tmp

    tmp = 0
    ans = []
    for j in range(1, i+1):
        for k in range(26):
            if tmp+26**(i-j) >= N:
                ans.append(k)
                break
            tmp += 26**(i-j)
    
    ans = ''.join([alphabets[id] for id in ans])

    return ans

def __starting_point():
    N = int(input())
    ans = main(N)
    print(ans)


__starting_point()

n=int(input())
a="xabcdefghijklmnopqrstuvwxyz"
ans=""
while True:
    d=n%26
    if(d==0):
        d=26
    ans+=a[d]
    n-=d
    if(n==0):
        break

    n=n//26
print((ans[::-1]))


N = int(input())
name = ""
k = 0
p = 0
while(N > p):
    k += 1
    p += 26 ** k
N -= p - 26 ** k + 1
for i in range(k):
    a = N % 26
    N //= 26
    name = chr(a + 97) + name
print(name)

n = int(input())
alphabets = [chr(i) for i in range(ord('a'), ord('a') + 26)]
ans = ''
while n > 0:
    n -= 1
    ans += alphabets[n % 26]
    n //= 26
print(ans[::-1])

N = int(input())

az = 'abcdefghijklmnopqrstuvwxyz'
ans = ''

while N:
    N -= 1
    ans = az[N%26] + ans
    N = N // 26

print(ans)

n = int(input())
ans = ""
while n != 0:
    n -= 1
    ans += chr(97 + n%26)
    n = n//26
for c in reversed(ans):
    print(c, end="")

N=int(input())
c=0;
while N-26**c>=0:
  N-=26**c
  c+=1
d=[0]*(c-1)
i=0
for i in range(c):
  d.insert(c-1,N%26)
  N=(N-d[i])//26
  i+=1
e=[]
s=''
for i in range(2*c-1):
  e.append(chr(97+d[i]))
  s+=e[i]
print(s[c-1:2*c-1])

# author:  Taichicchi
# created: 15.09.2020 21:11:53

import sys

N = int(input())
ans = ''
while N > 0:
    N -= 1
    ans += chr(ord('a') + N % 26)
    N //= 26
print((ans[::-1]))


N = int(input())
ans = ""

while N > 0:
    N -= 1 
    ans = chr(ord("a") + N%26) + ans
    N //= 26

print(ans)

n=int(input())-1
a=[]
q=n//26
r=n%26
a.insert(0,r)
while q>=26:
    q-=1
    r=q%26
    a.insert(0,r)
    q//=26
a.insert(0,q-1)
b=[]
for i in range(len(a)):
  if a[i]>=0:
    b.append(chr(a[i]+97))
print(*b,sep="")

import math,string,itertools,fractions,heapq,collections,re,array,bisect,sys,random,time, copy,bisect
#from operator import itemgetter
#from heapq import heappush, heappop
#import numpy as np
#import sympy
#from scipy.sparse.csgraph import breadth_first_order, depth_first_order, shortest_path, floyd_warshall, dijkstra, bellman_ford, johnson
#from scipy.sparse import csr_matrix
from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_EVEN
import sys

sys.setrecursionlimit(10**7)
inf = 10**20
mod = 10**9 + 7

stdin = sys.stdin

ni = lambda: int(ns())
nf = lambda: float(ns())
na = lambda: list(map(int, stdin.readline().split()))
nb = lambda: list(map(float, stdin.readline().split()))
ns = lambda: stdin.readline().rstrip()  # ignore trailing spaces

N = ni()
ans = 0
k = 26
ans = ''

while N != 0:
    if N % abs(k) == 0:
        ans += 'z' 
        N -= 1
    else:
        ans += chr(N % abs(k) + 96)
    N //= k 

print(ans[::-1])

N = int(input())

ans = ''

while(N):
    N -= 1
    ans = ans + chr(int(N % 26) + 97)
    N = N // 26
ans = ''.join(list(reversed(ans)))
print(ans)


from string import ascii_lowercase

N = int(input())

d = ""
while N > 0:
    N -= 1
    c = N % 26
    N = N // 26
    d = d + ascii_lowercase[c]

print(d[::-1])

N=int(input())
alpha='abcdefghijklmnopqrstuvwxyz'
 
ans=''
while 26<N:
    s=(N-1)%26
    ans=alpha[s]+ans
    N=int(N-1)//26
ans=alpha[N-1]+ans
print(ans)

N=int(input())
S="abcdefghijklmnopqrstuvwxyz"
ans=[]
while N>0:
    N-=1
    ans.append(S[N%26])
    N//=26
print((''.join(ans[::-1])))


N = int(input())
ans_reverse = ""

def num_to_alphabet(n):
  return chr(ord("a") - 1 + n)

while N:
  if N % 26 == 0:
    ans_reverse += "z"
    N -= 26
  else:
    ans_reverse += num_to_alphabet(N % 26)
  N //= 26
  
print(ans_reverse[::-1])

def ri():
    return int(input())


def rii():
    return [int(v) for v in input().split()]


def solve():
    N = ri()
    ans = ""
    
    while N:
        N, r = divmod(N - 1, 26)
        ans  = chr(ord("a") + r) + ans
        
    print(ans)

def __starting_point():
    solve()
__starting_point()