/*
If you want to aim high, aim high
Don't let that studying and grades consume you
Just live life young
******************************
What do you think? What do you think?
1st on Billboard, what do you think of it
Next is a Grammy, what do you think of it
However you think, I’m sorry, but shit, I have no fcking interest
*******************************
I'm standing on top of my Monopoly board
That means I'm on top of my game and it don't stop
til my hip don't hop anymore
https://www.a2oj.com/Ladder16.html
*******************************
300iq as writer = Sad!
*/
import java.util.*;
import java.io.*;
import java.math.*;

   public class Main
   {
      public static void main(String hi[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         long N = Long.parseLong(st.nextToken());
         long[] pow26 = new long[12];
         pow26[0] = 1L;
         for(int i=1; i <= 11; i++)
            pow26[i] = pow26[i-1]*26;
         int len = 0;
         long total = 0L;
         for(int l=1; l <= 11; l++)
         {
            long temp = 1L;
            for(int i=0; i < l; i++)
               temp *= 26;
            total += temp;
            if(total >= N)
            {
               len = l;
               break;
            }
         }
         char[] res = new char[len];
         Arrays.fill(res, '?');
         for(int i=1; i < len; i++)
            N -= pow26[i];
         for(int curr=0; curr < len-1; curr++)
         {
            long suffix = pow26[len-1-curr];
            char c = 'a';
            long cons = 0L;
            while(true)
            {
               if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               }
               cons += suffix;
               c = (char)(c+1);
            }
         }
         res[len-1] = (char)('a'+(int)N-1);
         System.out.println(res);
      }
   } import java.util.*; util.* java import java.io.*; io.* java import java.math.*; math.* java public class Main
   {
      public static void main(String hi[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         long N = Long.parseLong(st.nextToken());
         long[] pow26 = new long[12];
         pow26[0] = 1L;
         for(int i=1; i <= 11; i++)
            pow26[i] = pow26[i-1]*26;
         int len = 0;
         long total = 0L;
         for(int l=1; l <= 11; l++)
         {
            long temp = 1L;
            for(int i=0; i < l; i++)
               temp *= 26;
            total += temp;
            if(total >= N)
            {
               len = l;
               break;
            }
         }
         char[] res = new char[len];
         Arrays.fill(res, '?');
         for(int i=1; i < len; i++)
            N -= pow26[i];
         for(int curr=0; curr < len-1; curr++)
         {
            long suffix = pow26[len-1-curr];
            char c = 'a';
            long cons = 0L;
            while(true)
            {
               if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               }
               cons += suffix;
               c = (char)(c+1);
            }
         }
         res[len-1] = (char)('a'+(int)N-1);
         System.out.println(res);
      }
   } Main public static void main(String hi[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         long N = Long.parseLong(st.nextToken());
         long[] pow26 = new long[12];
         pow26[0] = 1L;
         for(int i=1; i <= 11; i++)
            pow26[i] = pow26[i-1]*26;
         int len = 0;
         long total = 0L;
         for(int l=1; l <= 11; l++)
         {
            long temp = 1L;
            for(int i=0; i < l; i++)
               temp *= 26;
            total += temp;
            if(total >= N)
            {
               len = l;
               break;
            }
         }
         char[] res = new char[len];
         Arrays.fill(res, '?');
         for(int i=1; i < len; i++)
            N -= pow26[i];
         for(int curr=0; curr < len-1; curr++)
         {
            long suffix = pow26[len-1-curr];
            char c = 'a';
            long cons = 0L;
            while(true)
            {
               if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               }
               cons += suffix;
               c = (char)(c+1);
            }
         }
         res[len-1] = (char)('a'+(int)N-1);
         System.out.println(res);
      } main {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         long N = Long.parseLong(st.nextToken());
         long[] pow26 = new long[12];
         pow26[0] = 1L;
         for(int i=1; i <= 11; i++)
            pow26[i] = pow26[i-1]*26;
         int len = 0;
         long total = 0L;
         for(int l=1; l <= 11; l++)
         {
            long temp = 1L;
            for(int i=0; i < l; i++)
               temp *= 26;
            total += temp;
            if(total >= N)
            {
               len = l;
               break;
            }
         }
         char[] res = new char[len];
         Arrays.fill(res, '?');
         for(int i=1; i < len; i++)
            N -= pow26[i];
         for(int curr=0; curr < len-1; curr++)
         {
            long suffix = pow26[len-1-curr];
            char c = 'a';
            long cons = 0L;
            while(true)
            {
               if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               }
               cons += suffix;
               c = (char)(c+1);
            }
         }
         res[len-1] = (char)('a'+(int)N-1);
         System.out.println(res);
      } BufferedReader infile = new BufferedReader(new InputStreamReader(System.in)); infile new BufferedReader(new InputStreamReader(System.in)) StringTokenizer st = new StringTokenizer(infile.readLine()); st new StringTokenizer(infile.readLine()) long N = Long.parseLong(st.nextToken()); N Long.parseLong(st.nextToken()) Long.parseLong Long st.nextToken() st.nextToken st long[] pow26 = new long[12]; pow26 new long[12] 12 pow26[0] = 1L pow26[0] pow26 0 1L for(int i=1; i <= 11; i++)
            pow26[i] = pow26[i-1]*26; int i=1; int i=1; i 1 i <= 11 i 11 i++ i++ i pow26[i] = pow26[i-1]*26; pow26[i] = pow26[i-1]*26 pow26[i] pow26 i pow26[i-1]*26 pow26[i-1] pow26 i-1 i 1 26 int len = 0; len 0 long total = 0L; total 0L for(int l=1; l <= 11; l++)
         {
            long temp = 1L;
            for(int i=0; i < l; i++)
               temp *= 26;
            total += temp;
            if(total >= N)
            {
               len = l;
               break;
            }
         } int l=1; int l=1; l 1 l <= 11 l 11 l++ l++ l {
            long temp = 1L;
            for(int i=0; i < l; i++)
               temp *= 26;
            total += temp;
            if(total >= N)
            {
               len = l;
               break;
            }
         } {
            long temp = 1L;
            for(int i=0; i < l; i++)
               temp *= 26;
            total += temp;
            if(total >= N)
            {
               len = l;
               break;
            }
         } long temp = 1L; temp 1L for(int i=0; i < l; i++)
               temp *= 26; int i=0; int i=0; i 0 i < l i l i++ i++ i temp *= 26; temp *= 26 temp 26 total += temp total temp if(total >= N)
            {
               len = l;
               break;
            } total >= N total N {
               len = l;
               break;
            } len = l len l break; char[] res = new char[len]; res new char[len] len Arrays.fill(res, '?') Arrays.fill Arrays res '?' for(int i=1; i < len; i++)
            N -= pow26[i]; int i=1; int i=1; i 1 i < len i len i++ i++ i N -= pow26[i]; N -= pow26[i] N pow26[i] pow26 i for(int curr=0; curr < len-1; curr++)
         {
            long suffix = pow26[len-1-curr];
            char c = 'a';
            long cons = 0L;
            while(true)
            {
               if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               }
               cons += suffix;
               c = (char)(c+1);
            }
         } int curr=0; int curr=0; curr 0 curr < len-1 curr len-1 len 1 curr++ curr++ curr {
            long suffix = pow26[len-1-curr];
            char c = 'a';
            long cons = 0L;
            while(true)
            {
               if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               }
               cons += suffix;
               c = (char)(c+1);
            }
         } {
            long suffix = pow26[len-1-curr];
            char c = 'a';
            long cons = 0L;
            while(true)
            {
               if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               }
               cons += suffix;
               c = (char)(c+1);
            }
         } long suffix = pow26[len-1-curr]; suffix pow26[len-1-curr] pow26 len-1-curr len-1-curr len 1 curr char c = 'a'; c 'a' long cons = 0L; cons 0L while(true)
            {
               if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               }
               cons += suffix;
               c = (char)(c+1);
            } true {
               if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               }
               cons += suffix;
               c = (char)(c+1);
            } if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               } N <= cons N cons {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               } res[curr] = (char)(c-1) res[curr] res curr (char)(c-1) c 1 cons -= suffix cons suffix N -= cons N cons break; cons += suffix cons suffix c = (char)(c+1) c (char)(c+1) c 1 res[len-1] = (char)('a'+(int)N-1) res[len-1] res len-1 len 1 (char)('a'+(int)N-1) 'a'+(int)N 'a' (int)N 1 System.out.println(res) System.out.println System.out System System.out res String hi[] hi public class Main
   {
      public static void main(String hi[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         long N = Long.parseLong(st.nextToken());
         long[] pow26 = new long[12];
         pow26[0] = 1L;
         for(int i=1; i <= 11; i++)
            pow26[i] = pow26[i-1]*26;
         int len = 0;
         long total = 0L;
         for(int l=1; l <= 11; l++)
         {
            long temp = 1L;
            for(int i=0; i < l; i++)
               temp *= 26;
            total += temp;
            if(total >= N)
            {
               len = l;
               break;
            }
         }
         char[] res = new char[len];
         Arrays.fill(res, '?');
         for(int i=1; i < len; i++)
            N -= pow26[i];
         for(int curr=0; curr < len-1; curr++)
         {
            long suffix = pow26[len-1-curr];
            char c = 'a';
            long cons = 0L;
            while(true)
            {
               if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               }
               cons += suffix;
               c = (char)(c+1);
            }
         }
         res[len-1] = (char)('a'+(int)N-1);
         System.out.println(res);
      }
   } public class Main
   {
      public static void main(String hi[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         long N = Long.parseLong(st.nextToken());
         long[] pow26 = new long[12];
         pow26[0] = 1L;
         for(int i=1; i <= 11; i++)
            pow26[i] = pow26[i-1]*26;
         int len = 0;
         long total = 0L;
         for(int l=1; l <= 11; l++)
         {
            long temp = 1L;
            for(int i=0; i < l; i++)
               temp *= 26;
            total += temp;
            if(total >= N)
            {
               len = l;
               break;
            }
         }
         char[] res = new char[len];
         Arrays.fill(res, '?');
         for(int i=1; i < len; i++)
            N -= pow26[i];
         for(int curr=0; curr < len-1; curr++)
         {
            long suffix = pow26[len-1-curr];
            char c = 'a';
            long cons = 0L;
            while(true)
            {
               if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               }
               cons += suffix;
               c = (char)(c+1);
            }
         }
         res[len-1] = (char)('a'+(int)N-1);
         System.out.println(res);
      }
   } Main
/*
If you want to aim high, aim high
Don't let that studying and grades consume you
Just live life young
******************************
What do you think? What do you think?
1st on Billboard, what do you think of it
Next is a Grammy, what do you think of it
However you think, I’m sorry, but shit, I have no fcking interest
*******************************
I'm standing on top of my Monopoly board
That means I'm on top of my game and it don't stop
til my hip don't hop anymore
https://www.a2oj.com/Ladder16.html
*******************************
300iq as writer = Sad!
*/
import java.util.*;
import java.io.*;
import java.math.*;

   public class Main
   {
      public static void main(String hi[]) throws Exception
      {
         BufferedReader infile = new BufferedReader(new InputStreamReader(System.in));
         StringTokenizer st = new StringTokenizer(infile.readLine());
         long N = Long.parseLong(st.nextToken());
         long[] pow26 = new long[12];
         pow26[0] = 1L;
         for(int i=1; i <= 11; i++)
            pow26[i] = pow26[i-1]*26;
         int len = 0;
         long total = 0L;
         for(int l=1; l <= 11; l++)
         {
            long temp = 1L;
            for(int i=0; i < l; i++)
               temp *= 26;
            total += temp;
            if(total >= N)
            {
               len = l;
               break;
            }
         }
         char[] res = new char[len];
         Arrays.fill(res, '?');
         for(int i=1; i < len; i++)
            N -= pow26[i];
         for(int curr=0; curr < len-1; curr++)
         {
            long suffix = pow26[len-1-curr];
            char c = 'a';
            long cons = 0L;
            while(true)
            {
               if(N <= cons)
               {
                  res[curr] = (char)(c-1);
                  cons -= suffix;
                  N -= cons;
                  break;
               }
               cons += suffix;
               c = (char)(c+1);
            }
         }
         res[len-1] = (char)('a'+(int)N-1);
         System.out.println(res);
      }
   }