///S->----------------------------------------------------|
///R->--------------</AUTHOR - SRIJAN DE>-----------------|
///I->--------</https://thesrijande.github.io/>-----------|
///J->----</JALPAIGURI GOVERNMENT ENGINEERING COLLEGE>----|
///A->------------</INFORMATION TECHNOLOGY>---------------|
///N->----------------------------------------------------|
#include    <bits/stdc++.h>
using       namespace            std;
using       ll =                 int64_t ;
using       ull =                unsigned long long ;
using       ld =                 long double;
#define     int                  int64_t
#define     mem(a,ss)           memset( a,  ss,  sizeof(a) )
#define     b_s                  binary_search
#define     u_b                  upper_bound
#define     l_b                  lower_bound
#define     nl                   cout<<endl
#define     pb                   push_back
#define     pf                   push_front
#define     ppb                  pop_back
#define     ppf                  pop_front
#define     in                   insert
#define     fi                   first
#define     se                   second
#define     umap                 unordered_map
#define     pqueue               priority_queue
#define     rr                   return
#define     bits(n)              __builtin_popcount(n)
const int   N =                   1e6 + 7;
const int   MOD =                 (int)1e9 + 7;
const int   MOD1 =                (int)1e9 + 9;
const int   MOD2 =                998244353;
const ld    pi =                  atan2(0, -1);
const ld    eps =                 1e-9;
int         tests =               1;
int         test =               1;
template<class x, class y>x max(x a, y b) {
    return (a > b) ? a : b;
}
template<class x, class y>x min(x a, y b) {
    return (a < b) ? a : b;
}
template<class x, class y>x log(x n, y r) {
    return (n > r - 1) ? 1 + log(n / r, r) : 0;
}

bool isprime(int n);
bool ispalin(int num);
bool isleapyear(int year);
int __lcm(int a, int b);
int power(int x, int y);
int digitsum(int n);
int fact(int n);
int npr(int n, int r);
int ncr(int n, int r);
int evensum(int n);
int oddsum(int n);
int find_set(int v);
void make_set(int v);
void union_sets(int a, int b);
void sorts(string &str);

///.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'
vector<int> adj[N], subset;
int vis[N] = {0};
///.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.
#define MAX 50
//https://www.geeksforgeeks.org/find-excel-column-name-given-number/
void printString(int n)
{
    char str[MAX]; // To store result (Excel column name)
    int i = 0; // To store current index in str which is result

    while (n > 0) {
        // Find remainder
        int rem = n % 26;

        // If remainder is 0, then a 'Z' must be there in output
        if (rem == 0) {
            str[i++] = 'z';
            n = (n / 26) - 1;
        }
        else // If remainder is non-zero
        {
            str[i++] = (rem - 1) + 'a';
            n = n / 26;
        }
    }
    str[i] = '\0';
    reverse(str, str + strlen(str));
    cout << str << endl;

    return;
}



int32_t main()
{
    auto start = clock();
    ios_base::sync_with_stdio(0);
    cout.tie(0);
    cin.tie(0);
#ifndef ONLINE_JUDGE
    {
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
        freopen("error.txt", "w", stderr);
    }
#endif

//  cout<<fixed;
//  cout<<scientific;
//  cout<<fixed<<setprecision(12);
    // cin >> tests;
    for (test = 1; test <= tests; test++)
    {
        // cout<<"Case #"<<test<<": ";
///.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.


        int n;
        cin >> n;
        printString(n);












///.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.

    }
    cerr << endl << endl <<  endl <<
         "Time : " << double(clock() - start) / CLOCKS_PER_SEC << endl;
    return 0;
}
























bool isprime(int n)
{
    for (int i = 2; i <= sqrt(n); i++)
    {
        if (n % i == 0)
            return false ;
    }
    return true ;

}

bool ispalin(int num)
{
    bool flag = false;
    int digit, rev = 0, n = num;
    do
    {
        digit = num % 10;
        rev = (rev * 10) + digit;
        num = num / 10;
    } while (num != 0);
    if (rev == n)
        flag = true;
    return flag;
}

bool isleapyear(int year)
{
    if (year % 400 == 0)
        return true;

    if (year % 100 == 0)
        return false;

    if (year % 4 == 0)
        return true;
    return false;
}

int __lcm(int a, int b)
{
    return (a * b) / __gcd(a, b);
}

int power(int x, int y)
{
    int temp;
    if ( y == 0)
        return 1;
    temp = pow(x, y / 2);
    if (y % 2 == 0)
        return temp * temp;
    else
        return x * temp * temp;
}

int digitsum(int n)
{
    int c = 0;
    while (n > 0)
    {
        c++;
        n /= 10;
    }
    return c;
}

int fact(int n)
{
    if (n <= 1)
        return 1;
    return n * fact(n - 1);
}

int ncr(int n, int r)
{
    long long p = 1, k = 1;
    if (n - r < r)
        r = n - r;

    if (r != 0) {
        while (r) {
            p *= n;
            k *= r;
            int m = __gcd(p, k);
            p /= m;
            k /= m;
            n--;
            r--;
        }
    }
    else
        p = 1;
    return p;
}

int npr(int n, int r)
{
    return fact(n) / fact(n - r);
}

int evensum(int n)
{
    return (n / 2 * (n / 2 + 1));
}

int oddsum(int n)
{
    return (((n + 1) / 2) * ((n + 1) / 2));
}

void sorts(string &str)
{
    sort(str.begin(), str.end());
}

Measured memory_bytes: 27308