import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;
 
public class Main {
 
    void solve() throws IOException {
        long N = nl();
        long[] d26 = new long[15];
        d26[0] = 1;
        for (int i = 1; i < 15; i++) {
            d26[i] = d26[i-1]*26;
        }
        char []alphabet = new char[26];
        char c = 'a';
        for (int i = 0; i < 26; i++){
            alphabet[i] = c++;
        }
        N = N-1;
        ArrayList<Character> ans = new ArrayList<>();
        for (int i = 1; i < d26.length; i++) {
            if(N-d26[i] >= 0){
                N -= d26[i];
            }else{
                for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                }
                break;
            }
        }
        for (int i = 0; i < ans.size(); i++) {
            out.print(ans.get(i));
        }
    }

 
    String ns() throws IOException {
        while (!tok.hasMoreTokens()) {
            tok = new StringTokenizer(in.readLine(), " ");
        }
        return tok.nextToken();
    }
 
    int ni() throws IOException {
        return Integer.parseInt(ns());
    }
 
    long nl() throws IOException {
        return Long.parseLong(ns());
    }
 
    double nd() throws IOException {
        return Double.parseDouble(ns());
    }
 
    String[] nsa(int n) throws IOException {
        String[] res = new String[n];
        for (int i = 0; i < n; i++) {
            res[i] = ns();
        }
        return res;
    }
 
    int[] nia(int n) throws IOException {
        int[] res = new int[n];
        for (int i = 0; i < n; i++) {
            res[i] = ni();
        }
        return res;
    }
 
    long[] nla(int n) throws IOException {
        long[] res = new long[n];
        for (int i = 0; i < n; i++) {
            res[i] = nl();
        }
        return res;
    }
 
    static BufferedReader in;
    static PrintWriter out;
    static StringTokenizer tok;
 
    public static void main(String[] args) throws IOException {
        in = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
        tok = new StringTokenizer("");
        Main main = new Main();
        main.solve();
        out.close();
    }
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.io.PrintWriter; PrintWriter java.io import java.util.*; util.* java public class Main {
 
    void solve() throws IOException {
        long N = nl();
        long[] d26 = new long[15];
        d26[0] = 1;
        for (int i = 1; i < 15; i++) {
            d26[i] = d26[i-1]*26;
        }
        char []alphabet = new char[26];
        char c = 'a';
        for (int i = 0; i < 26; i++){
            alphabet[i] = c++;
        }
        N = N-1;
        ArrayList<Character> ans = new ArrayList<>();
        for (int i = 1; i < d26.length; i++) {
            if(N-d26[i] >= 0){
                N -= d26[i];
            }else{
                for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                }
                break;
            }
        }
        for (int i = 0; i < ans.size(); i++) {
            out.print(ans.get(i));
        }
    }

 
    String ns() throws IOException {
        while (!tok.hasMoreTokens()) {
            tok = new StringTokenizer(in.readLine(), " ");
        }
        return tok.nextToken();
    }
 
    int ni() throws IOException {
        return Integer.parseInt(ns());
    }
 
    long nl() throws IOException {
        return Long.parseLong(ns());
    }
 
    double nd() throws IOException {
        return Double.parseDouble(ns());
    }
 
    String[] nsa(int n) throws IOException {
        String[] res = new String[n];
        for (int i = 0; i < n; i++) {
            res[i] = ns();
        }
        return res;
    }
 
    int[] nia(int n) throws IOException {
        int[] res = new int[n];
        for (int i = 0; i < n; i++) {
            res[i] = ni();
        }
        return res;
    }
 
    long[] nla(int n) throws IOException {
        long[] res = new long[n];
        for (int i = 0; i < n; i++) {
            res[i] = nl();
        }
        return res;
    }
 
    static BufferedReader in;
    static PrintWriter out;
    static StringTokenizer tok;
 
    public static void main(String[] args) throws IOException {
        in = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
        tok = new StringTokenizer("");
        Main main = new Main();
        main.solve();
        out.close();
    }
} Main static BufferedReader in; in static PrintWriter out; out static StringTokenizer tok; tok void solve() throws IOException {
        long N = nl();
        long[] d26 = new long[15];
        d26[0] = 1;
        for (int i = 1; i < 15; i++) {
            d26[i] = d26[i-1]*26;
        }
        char []alphabet = new char[26];
        char c = 'a';
        for (int i = 0; i < 26; i++){
            alphabet[i] = c++;
        }
        N = N-1;
        ArrayList<Character> ans = new ArrayList<>();
        for (int i = 1; i < d26.length; i++) {
            if(N-d26[i] >= 0){
                N -= d26[i];
            }else{
                for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                }
                break;
            }
        }
        for (int i = 0; i < ans.size(); i++) {
            out.print(ans.get(i));
        }
    } solve {
        long N = nl();
        long[] d26 = new long[15];
        d26[0] = 1;
        for (int i = 1; i < 15; i++) {
            d26[i] = d26[i-1]*26;
        }
        char []alphabet = new char[26];
        char c = 'a';
        for (int i = 0; i < 26; i++){
            alphabet[i] = c++;
        }
        N = N-1;
        ArrayList<Character> ans = new ArrayList<>();
        for (int i = 1; i < d26.length; i++) {
            if(N-d26[i] >= 0){
                N -= d26[i];
            }else{
                for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                }
                break;
            }
        }
        for (int i = 0; i < ans.size(); i++) {
            out.print(ans.get(i));
        }
    } long N = nl(); N nl() nl long[] d26 = new long[15]; d26 new long[15] 15 d26[0] = 1 d26[0] d26 0 1 for (int i = 1; i < 15; i++) {
            d26[i] = d26[i-1]*26;
        } int i = 1; int i = 1; i 1 i < 15 i 15 i++ i++ i {
            d26[i] = d26[i-1]*26;
        } {
            d26[i] = d26[i-1]*26;
        } d26[i] = d26[i-1]*26 d26[i] d26 i d26[i-1]*26 d26[i-1] d26 i-1 i 1 26 char []alphabet = new char[26]; alphabet new char[26] 26 char c = 'a'; c 'a' for (int i = 0; i < 26; i++){
            alphabet[i] = c++;
        } int i = 0; int i = 0; i 0 i < 26 i 26 i++ i++ i {
            alphabet[i] = c++;
        } {
            alphabet[i] = c++;
        } alphabet[i] = c++ alphabet[i] alphabet i c++ c N = N-1 N N-1 N 1 ArrayList<Character> ans = new ArrayList<>(); ans new ArrayList<>() for (int i = 1; i < d26.length; i++) {
            if(N-d26[i] >= 0){
                N -= d26[i];
            }else{
                for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                }
                break;
            }
        } int i = 1; int i = 1; i 1 i < d26.length i d26.length d26 d26.length i++ i++ i {
            if(N-d26[i] >= 0){
                N -= d26[i];
            }else{
                for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                }
                break;
            }
        } {
            if(N-d26[i] >= 0){
                N -= d26[i];
            }else{
                for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                }
                break;
            }
        } if(N-d26[i] >= 0){
                N -= d26[i];
            }else{
                for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                }
                break;
            } N-d26[i] >= 0 N-d26[i] N d26[i] d26 i 0 {
                N -= d26[i];
            } N -= d26[i] N d26[i] d26 i {
                for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                }
                break;
            } for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                } int j = i; int j = i; j i j >=1 j 1 j-- j-- j {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                } {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                } ans.add(alphabet[(int)(N/d26[j-1])]) ans.add ans alphabet[(int)(N/d26[j-1])] alphabet (int)(N/d26[j-1]) N d26[j-1] d26 j-1 j 1 N = N % d26[j-1] N N % d26[j-1] N d26[j-1] d26 j-1 j 1 break; for (int i = 0; i < ans.size(); i++) {
            out.print(ans.get(i));
        } int i = 0; int i = 0; i 0 i < ans.size() i ans.size() ans.size ans i++ i++ i {
            out.print(ans.get(i));
        } {
            out.print(ans.get(i));
        } out.print(ans.get(i)) out.print out ans.get(i) ans.get ans i String ns() throws IOException {
        while (!tok.hasMoreTokens()) {
            tok = new StringTokenizer(in.readLine(), " ");
        }
        return tok.nextToken();
    } ns {
        while (!tok.hasMoreTokens()) {
            tok = new StringTokenizer(in.readLine(), " ");
        }
        return tok.nextToken();
    } while (!tok.hasMoreTokens()) {
            tok = new StringTokenizer(in.readLine(), " ");
        } !tok.hasMoreTokens() tok.hasMoreTokens() tok.hasMoreTokens tok {
            tok = new StringTokenizer(in.readLine(), " ");
        } tok = new StringTokenizer(in.readLine(), " ") tok new StringTokenizer(in.readLine(), " ") return tok.nextToken(); tok.nextToken() tok.nextToken tok int ni() throws IOException {
        return Integer.parseInt(ns());
    } ni {
        return Integer.parseInt(ns());
    } return Integer.parseInt(ns()); Integer.parseInt(ns()) Integer.parseInt Integer ns() ns long nl() throws IOException {
        return Long.parseLong(ns());
    } nl {
        return Long.parseLong(ns());
    } return Long.parseLong(ns()); Long.parseLong(ns()) Long.parseLong Long ns() ns double nd() throws IOException {
        return Double.parseDouble(ns());
    } nd {
        return Double.parseDouble(ns());
    } return Double.parseDouble(ns()); Double.parseDouble(ns()) Double.parseDouble Double ns() ns String[] nsa(int n) throws IOException {
        String[] res = new String[n];
        for (int i = 0; i < n; i++) {
            res[i] = ns();
        }
        return res;
    } nsa {
        String[] res = new String[n];
        for (int i = 0; i < n; i++) {
            res[i] = ns();
        }
        return res;
    } String[] res = new String[n]; res new String[n] n for (int i = 0; i < n; i++) {
            res[i] = ns();
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            res[i] = ns();
        } {
            res[i] = ns();
        } res[i] = ns() res[i] res i ns() ns return res; res int n n int[] nia(int n) throws IOException {
        int[] res = new int[n];
        for (int i = 0; i < n; i++) {
            res[i] = ni();
        }
        return res;
    } nia {
        int[] res = new int[n];
        for (int i = 0; i < n; i++) {
            res[i] = ni();
        }
        return res;
    } int[] res = new int[n]; res new int[n] n for (int i = 0; i < n; i++) {
            res[i] = ni();
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            res[i] = ni();
        } {
            res[i] = ni();
        } res[i] = ni() res[i] res i ni() ni return res; res int n n long[] nla(int n) throws IOException {
        long[] res = new long[n];
        for (int i = 0; i < n; i++) {
            res[i] = nl();
        }
        return res;
    } nla {
        long[] res = new long[n];
        for (int i = 0; i < n; i++) {
            res[i] = nl();
        }
        return res;
    } long[] res = new long[n]; res new long[n] n for (int i = 0; i < n; i++) {
            res[i] = nl();
        } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
            res[i] = nl();
        } {
            res[i] = nl();
        } res[i] = nl() res[i] res i nl() nl return res; res int n n public static void main(String[] args) throws IOException {
        in = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
        tok = new StringTokenizer("");
        Main main = new Main();
        main.solve();
        out.close();
    } main {
        in = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
        tok = new StringTokenizer("");
        Main main = new Main();
        main.solve();
        out.close();
    } in = new BufferedReader(new InputStreamReader(System.in)) in new BufferedReader(new InputStreamReader(System.in)) out = new PrintWriter(System.out) out new PrintWriter(System.out) tok = new StringTokenizer("") tok new StringTokenizer("") Main main = new Main(); main new Main() main.solve() main.solve main out.close() out.close out String[] args args public class Main {
 
    void solve() throws IOException {
        long N = nl();
        long[] d26 = new long[15];
        d26[0] = 1;
        for (int i = 1; i < 15; i++) {
            d26[i] = d26[i-1]*26;
        }
        char []alphabet = new char[26];
        char c = 'a';
        for (int i = 0; i < 26; i++){
            alphabet[i] = c++;
        }
        N = N-1;
        ArrayList<Character> ans = new ArrayList<>();
        for (int i = 1; i < d26.length; i++) {
            if(N-d26[i] >= 0){
                N -= d26[i];
            }else{
                for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                }
                break;
            }
        }
        for (int i = 0; i < ans.size(); i++) {
            out.print(ans.get(i));
        }
    }

 
    String ns() throws IOException {
        while (!tok.hasMoreTokens()) {
            tok = new StringTokenizer(in.readLine(), " ");
        }
        return tok.nextToken();
    }
 
    int ni() throws IOException {
        return Integer.parseInt(ns());
    }
 
    long nl() throws IOException {
        return Long.parseLong(ns());
    }
 
    double nd() throws IOException {
        return Double.parseDouble(ns());
    }
 
    String[] nsa(int n) throws IOException {
        String[] res = new String[n];
        for (int i = 0; i < n; i++) {
            res[i] = ns();
        }
        return res;
    }
 
    int[] nia(int n) throws IOException {
        int[] res = new int[n];
        for (int i = 0; i < n; i++) {
            res[i] = ni();
        }
        return res;
    }
 
    long[] nla(int n) throws IOException {
        long[] res = new long[n];
        for (int i = 0; i < n; i++) {
            res[i] = nl();
        }
        return res;
    }
 
    static BufferedReader in;
    static PrintWriter out;
    static StringTokenizer tok;
 
    public static void main(String[] args) throws IOException {
        in = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
        tok = new StringTokenizer("");
        Main main = new Main();
        main.solve();
        out.close();
    }
} public class Main {
 
    void solve() throws IOException {
        long N = nl();
        long[] d26 = new long[15];
        d26[0] = 1;
        for (int i = 1; i < 15; i++) {
            d26[i] = d26[i-1]*26;
        }
        char []alphabet = new char[26];
        char c = 'a';
        for (int i = 0; i < 26; i++){
            alphabet[i] = c++;
        }
        N = N-1;
        ArrayList<Character> ans = new ArrayList<>();
        for (int i = 1; i < d26.length; i++) {
            if(N-d26[i] >= 0){
                N -= d26[i];
            }else{
                for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                }
                break;
            }
        }
        for (int i = 0; i < ans.size(); i++) {
            out.print(ans.get(i));
        }
    }

 
    String ns() throws IOException {
        while (!tok.hasMoreTokens()) {
            tok = new StringTokenizer(in.readLine(), " ");
        }
        return tok.nextToken();
    }
 
    int ni() throws IOException {
        return Integer.parseInt(ns());
    }
 
    long nl() throws IOException {
        return Long.parseLong(ns());
    }
 
    double nd() throws IOException {
        return Double.parseDouble(ns());
    }
 
    String[] nsa(int n) throws IOException {
        String[] res = new String[n];
        for (int i = 0; i < n; i++) {
            res[i] = ns();
        }
        return res;
    }
 
    int[] nia(int n) throws IOException {
        int[] res = new int[n];
        for (int i = 0; i < n; i++) {
            res[i] = ni();
        }
        return res;
    }
 
    long[] nla(int n) throws IOException {
        long[] res = new long[n];
        for (int i = 0; i < n; i++) {
            res[i] = nl();
        }
        return res;
    }
 
    static BufferedReader in;
    static PrintWriter out;
    static StringTokenizer tok;
 
    public static void main(String[] args) throws IOException {
        in = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
        tok = new StringTokenizer("");
        Main main = new Main();
        main.solve();
        out.close();
    }
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;
 
public class Main {
 
    void solve() throws IOException {
        long N = nl();
        long[] d26 = new long[15];
        d26[0] = 1;
        for (int i = 1; i < 15; i++) {
            d26[i] = d26[i-1]*26;
        }
        char []alphabet = new char[26];
        char c = 'a';
        for (int i = 0; i < 26; i++){
            alphabet[i] = c++;
        }
        N = N-1;
        ArrayList<Character> ans = new ArrayList<>();
        for (int i = 1; i < d26.length; i++) {
            if(N-d26[i] >= 0){
                N -= d26[i];
            }else{
                for (int j = i; j >=1; j--) {
                    // System.out.println(N);
                    // System.out.println((N/d26[j-1]));
                    ans.add(alphabet[(int)(N/d26[j-1])]);
                    N = N % d26[j-1];
                    // N -= d26[j-1] * ((N-1)/d26[j] + 1);
                }
                break;
            }
        }
        for (int i = 0; i < ans.size(); i++) {
            out.print(ans.get(i));
        }
    }

 
    String ns() throws IOException {
        while (!tok.hasMoreTokens()) {
            tok = new StringTokenizer(in.readLine(), " ");
        }
        return tok.nextToken();
    }
 
    int ni() throws IOException {
        return Integer.parseInt(ns());
    }
 
    long nl() throws IOException {
        return Long.parseLong(ns());
    }
 
    double nd() throws IOException {
        return Double.parseDouble(ns());
    }
 
    String[] nsa(int n) throws IOException {
        String[] res = new String[n];
        for (int i = 0; i < n; i++) {
            res[i] = ns();
        }
        return res;
    }
 
    int[] nia(int n) throws IOException {
        int[] res = new int[n];
        for (int i = 0; i < n; i++) {
            res[i] = ni();
        }
        return res;
    }
 
    long[] nla(int n) throws IOException {
        long[] res = new long[n];
        for (int i = 0; i < n; i++) {
            res[i] = nl();
        }
        return res;
    }
 
    static BufferedReader in;
    static PrintWriter out;
    static StringTokenizer tok;
 
    public static void main(String[] args) throws IOException {
        in = new BufferedReader(new InputStreamReader(System.in));
        out = new PrintWriter(System.out);
        tok = new StringTokenizer("");
        Main main = new Main();
        main.solve();
        out.close();
    }
}