

def s0():return eval(input())

def s1():return input().split()

def s2(n):return [eval(input()) for x in range(n)]

def s3(n):return [input().split() for _ in range(n)]

def s4(n):return [[x for x in s] for s in s2(n)]

def n0():return int(eval(input()))

def n1():return [int(x) for x in input().split()]

def n2(n):return [int(eval(input())) for _ in range(n)]

def n3(n):return [[int(x) for x in input().split()] for _ in range(n)]

def t3(n):return [tuple(int(x) for x in input().split()) for _ in range(n)]

def p0(b,yes="Yes",no="No"): print((yes if b else no))

# from sys import setrecursionlimit

# setrecursionlimit(1000000)

# from collections import Counter,deque,defaultdict

# import itertools

# import math

# import networkx as nx

# from bisect import bisect_left,bisect_right

# from heapq import heapify,heappush,heappop

n=n0()

# n=1000000000000001



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)

print((num2alpha(n).lower()))


def s0():return eval(input())

def s1():return input().split()

def s2(n):return [eval(input()) for x in range(n)]

def s3(n):return [input().split() for _ in range(n)]

def s4(n):return [[x for x in s] for s in s2(n)]

def n0():return int(eval(input()))

def n1():return [int(x) for x in input().split()]

def n2(n):return [int(eval(input())) for _ in range(n)]

def n3(n):return [[int(x) for x in input().split()] for _ in range(n)]

def t3(n):return [tuple(int(x) for x in input().split()) for _ in range(n)]

def p0(b,yes="Yes",no="No"): print((yes if b else no))

# from sys import setrecursionlimit

# setrecursionlimit(1000000)

# from collections import Counter,deque,defaultdict

# import itertools

# import math

# import networkx as nx

# from bisect import bisect_left,bisect_right

# from heapq import heapify,heappush,heappop

n=n0()

# n=1000000000000001



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)))
def s0():
    return eval(input())


def s1():
    return input().split()


def s2(n):
    return [eval(input()) for x in range(n)]


def s3(n):
    return [input().split() for _ in range(n)]


def s4(n):
    return [[x for x in s] for s in s2(n)]


def n0():
    return int(eval(input()))


def n1():
    return [int(x) for x in input().split()]


def n2(n):
    return [int(eval(input())) for _ in range(n)]


def n3(n):
    return [[int(x) for x in input().split()] for _ in range(n)]


def t3(n):
    return [tuple(int(x) for x in input().split()) for _ in range(n)]


def p0(b, yes="Yes", no="No"):
    print((yes if b else no))


# from sys import setrecursionlimit
# setrecursionlimit(1000000)
# from collections import Counter,deque,defaultdict
# import itertools
# import math
# import networkx as nx
# from bisect import bisect_left,bisect_right
# from heapq import heapify,heappush,heappop
n = n0()
# n=1000000000000001
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)


print((num2alpha(n).lower()))

def s0():
    return eval(input())


def s1():
    return input().split()


def s2(n):
    return [eval(input()) for x in range(n)]


def s3(n):
    return [input().split() for _ in range(n)]


def s4(n):
    return [[x for x in s] for s in s2(n)]


def n0():
    return int(eval(input()))


def n1():
    return [int(x) for x in input().split()]


def n2(n):
    return [int(eval(input())) for _ in range(n)]


def n3(n):
    return [[int(x) for x in input().split()] for _ in range(n)]


def t3(n):
    return [tuple(int(x) for x in input().split()) for _ in range(n)]


def p0(b, yes="Yes", no="No"):
    print((yes if b else no))


# from sys import setrecursionlimit
# setrecursionlimit(1000000)
# from collections import Counter,deque,defaultdict
# import itertools
# import math
# import networkx as nx
# from bisect import bisect_left,bisect_right
# from heapq import heapify,heappush,heappop
n = n0()
# n=1000000000000001
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)))

-        return chr(64 + num) +        return chr(96 + num) -        return num2alpha(num // 26 - 1) + chr(90) +        return num2alpha(num // 26 - 1) + chr(122) -        return num2alpha(num // 26) + chr(64 + num % 26) +        return num2alpha(num // 26) + chr(96 + num % 26) -print((num2alpha(n).lower())) +print((num2alpha(n)))