import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.solve();
    }
    public void solve() {
        Scanner scan = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
        long N = scan.nextLong();
        c(N);
    }
    private long pow(int base, int count) {
        if (count == 0) {
            return 1;
        }
        if (count % 2 == 1) {
            return base * pow(base, count-1);
        }
        long t = pow(base, count / 2);
        return t * t;
    }
    public void c(long N) {
        int len = 0;
        for (len = 1; len < 12; len++) {
            long t = pow(26, len);
            if (N <= t) {
                N -= 1;
                break;
            }
            N -= t;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < len; i++) {
            int t = (int) (N % 26);
            sb.append((char)(t + 'a'));
            N /= 26;
        }
        System.out.println(sb.reverse().toString());
    }
} import java.io.BufferedReader; BufferedReader java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.Scanner; Scanner java.util public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.solve();
    }
    public void solve() {
        Scanner scan = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
        long N = scan.nextLong();
        c(N);
    }
    private long pow(int base, int count) {
        if (count == 0) {
            return 1;
        }
        if (count % 2 == 1) {
            return base * pow(base, count-1);
        }
        long t = pow(base, count / 2);
        return t * t;
    }
    public void c(long N) {
        int len = 0;
        for (len = 1; len < 12; len++) {
            long t = pow(26, len);
            if (N <= t) {
                N -= 1;
                break;
            }
            N -= t;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < len; i++) {
            int t = (int) (N % 26);
            sb.append((char)(t + 'a'));
            N /= 26;
        }
        System.out.println(sb.reverse().toString());
    }
} Main public static void main(String[] args) {
        Main main = new Main();
        main.solve();
    } main {
        Main main = new Main();
        main.solve();
    } Main main = new Main(); main new Main() main.solve() main.solve main String[] args args public void solve() {
        Scanner scan = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
        long N = scan.nextLong();
        c(N);
    } solve {
        Scanner scan = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
        long N = scan.nextLong();
        c(N);
    } Scanner scan = new Scanner(new BufferedReader(new InputStreamReader(System.in))); scan new Scanner(new BufferedReader(new InputStreamReader(System.in))) long N = scan.nextLong(); N scan.nextLong() scan.nextLong scan c(N) c N private long pow(int base, int count) {
        if (count == 0) {
            return 1;
        }
        if (count % 2 == 1) {
            return base * pow(base, count-1);
        }
        long t = pow(base, count / 2);
        return t * t;
    } pow {
        if (count == 0) {
            return 1;
        }
        if (count % 2 == 1) {
            return base * pow(base, count-1);
        }
        long t = pow(base, count / 2);
        return t * t;
    } if (count == 0) {
            return 1;
        } count == 0 count 0 {
            return 1;
        } return 1; 1 if (count % 2 == 1) {
            return base * pow(base, count-1);
        } count % 2 == 1 count % 2 count 2 1 {
            return base * pow(base, count-1);
        } return base * pow(base, count-1); base * pow(base, count-1) base pow(base, count-1) pow base count-1 count 1 long t = pow(base, count / 2); t pow(base, count / 2) pow base count / 2 count 2 return t * t; t * t t t int base base int count count public void c(long N) {
        int len = 0;
        for (len = 1; len < 12; len++) {
            long t = pow(26, len);
            if (N <= t) {
                N -= 1;
                break;
            }
            N -= t;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < len; i++) {
            int t = (int) (N % 26);
            sb.append((char)(t + 'a'));
            N /= 26;
        }
        System.out.println(sb.reverse().toString());
    } c {
        int len = 0;
        for (len = 1; len < 12; len++) {
            long t = pow(26, len);
            if (N <= t) {
                N -= 1;
                break;
            }
            N -= t;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < len; i++) {
            int t = (int) (N % 26);
            sb.append((char)(t + 'a'));
            N /= 26;
        }
        System.out.println(sb.reverse().toString());
    } int len = 0; len 0 for (len = 1; len < 12; len++) {
            long t = pow(26, len);
            if (N <= t) {
                N -= 1;
                break;
            }
            N -= t;
        } len = 1; len = 1 len 1 len < 12 len 12 len++ len++ len {
            long t = pow(26, len);
            if (N <= t) {
                N -= 1;
                break;
            }
            N -= t;
        } {
            long t = pow(26, len);
            if (N <= t) {
                N -= 1;
                break;
            }
            N -= t;
        } long t = pow(26, len); t pow(26, len) pow 26 len if (N <= t) {
                N -= 1;
                break;
            } N <= t N t {
                N -= 1;
                break;
            } N -= 1 N 1 break; N -= t N t StringBuilder sb = new StringBuilder(); sb new StringBuilder() for (int i = 0; i < len; i++) {
            int t = (int) (N % 26);
            sb.append((char)(t + 'a'));
            N /= 26;
        } int i = 0; int i = 0; i 0 i < len i len i++ i++ i {
            int t = (int) (N % 26);
            sb.append((char)(t + 'a'));
            N /= 26;
        } {
            int t = (int) (N % 26);
            sb.append((char)(t + 'a'));
            N /= 26;
        } int t = (int) (N % 26); t (int) (N % 26) N 26 sb.append((char)(t + 'a')) sb.append sb (char)(t + 'a') t 'a' N /= 26 N 26 System.out.println(sb.reverse().toString()) System.out.println System.out System System.out sb.reverse().toString() sb.reverse().toString sb.reverse() sb.reverse sb long N N public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.solve();
    }
    public void solve() {
        Scanner scan = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
        long N = scan.nextLong();
        c(N);
    }
    private long pow(int base, int count) {
        if (count == 0) {
            return 1;
        }
        if (count % 2 == 1) {
            return base * pow(base, count-1);
        }
        long t = pow(base, count / 2);
        return t * t;
    }
    public void c(long N) {
        int len = 0;
        for (len = 1; len < 12; len++) {
            long t = pow(26, len);
            if (N <= t) {
                N -= 1;
                break;
            }
            N -= t;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < len; i++) {
            int t = (int) (N % 26);
            sb.append((char)(t + 'a'));
            N /= 26;
        }
        System.out.println(sb.reverse().toString());
    }
} public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.solve();
    }
    public void solve() {
        Scanner scan = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
        long N = scan.nextLong();
        c(N);
    }
    private long pow(int base, int count) {
        if (count == 0) {
            return 1;
        }
        if (count % 2 == 1) {
            return base * pow(base, count-1);
        }
        long t = pow(base, count / 2);
        return t * t;
    }
    public void c(long N) {
        int len = 0;
        for (len = 1; len < 12; len++) {
            long t = pow(26, len);
            if (N <= t) {
                N -= 1;
                break;
            }
            N -= t;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < len; i++) {
            int t = (int) (N % 26);
            sb.append((char)(t + 'a'));
            N /= 26;
        }
        System.out.println(sb.reverse().toString());
    }
} Main
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        main.solve();
    }
    public void solve() {
        Scanner scan = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
        long N = scan.nextLong();
        c(N);
    }
    private long pow(int base, int count) {
        if (count == 0) {
            return 1;
        }
        if (count % 2 == 1) {
            return base * pow(base, count-1);
        }
        long t = pow(base, count / 2);
        return t * t;
    }
    public void c(long N) {
        int len = 0;
        for (len = 1; len < 12; len++) {
            long t = pow(26, len);
            if (N <= t) {
                N -= 1;
                break;
            }
            N -= t;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < len; i++) {
            int t = (int) (N % 26);
            sb.append((char)(t + 'a'));
            N /= 26;
        }
        System.out.println(sb.reverse().toString());
    }
}
