import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        int[] bits = new int[12]; //26進数を記録
        int top = 0; //26進表記何桁か
        
        //26進数に変換
        while(n > 0) {
            bits[top] = (int)(n % 26);
            n /= 26;
            top++;
        }

        //下から1以上になるように補正
        for(int i = 0; i < top - 1; i++) {
            if(bits[i] <= 0) {
                bits[i] += 26;
                bits[i + 1]--;
            }
        }
        //最上位の桁(bits[top - 1])が0に繰り下がった場合、topを１減らす
        if(bits[top - 1] == 0) top--;

        //上の桁から出力
        for(int i = top - 1; i >= 0; i--) {
            System.out.print((char)('a' + bits[i] - 1));
        }
        System.out.println();
    }
} import java.util.Scanner; Scanner java.util public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        int[] bits = new int[12]; //26進数を記録
        int top = 0; //26進表記何桁か
        
        //26進数に変換
        while(n > 0) {
            bits[top] = (int)(n % 26);
            n /= 26;
            top++;
        }

        //下から1以上になるように補正
        for(int i = 0; i < top - 1; i++) {
            if(bits[i] <= 0) {
                bits[i] += 26;
                bits[i + 1]--;
            }
        }
        //最上位の桁(bits[top - 1])が0に繰り下がった場合、topを１減らす
        if(bits[top - 1] == 0) top--;

        //上の桁から出力
        for(int i = top - 1; i >= 0; i--) {
            System.out.print((char)('a' + bits[i] - 1));
        }
        System.out.println();
    }
} Main public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        int[] bits = new int[12]; //26進数を記録
        int top = 0; //26進表記何桁か
        
        //26進数に変換
        while(n > 0) {
            bits[top] = (int)(n % 26);
            n /= 26;
            top++;
        }

        //下から1以上になるように補正
        for(int i = 0; i < top - 1; i++) {
            if(bits[i] <= 0) {
                bits[i] += 26;
                bits[i + 1]--;
            }
        }
        //最上位の桁(bits[top - 1])が0に繰り下がった場合、topを１減らす
        if(bits[top - 1] == 0) top--;

        //上の桁から出力
        for(int i = top - 1; i >= 0; i--) {
            System.out.print((char)('a' + bits[i] - 1));
        }
        System.out.println();
    } main {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        int[] bits = new int[12]; //26進数を記録
        int top = 0; //26進表記何桁か
        
        //26進数に変換
        while(n > 0) {
            bits[top] = (int)(n % 26);
            n /= 26;
            top++;
        }

        //下から1以上になるように補正
        for(int i = 0; i < top - 1; i++) {
            if(bits[i] <= 0) {
                bits[i] += 26;
                bits[i + 1]--;
            }
        }
        //最上位の桁(bits[top - 1])が0に繰り下がった場合、topを１減らす
        if(bits[top - 1] == 0) top--;

        //上の桁から出力
        for(int i = top - 1; i >= 0; i--) {
            System.out.print((char)('a' + bits[i] - 1));
        }
        System.out.println();
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) long n = sc.nextLong(); n sc.nextLong() sc.nextLong sc int[] bits = new int[12]; bits new int[12] 12 int top = 0; top 0 while(n > 0) {
            bits[top] = (int)(n % 26);
            n /= 26;
            top++;
        } n > 0 n 0 {
            bits[top] = (int)(n % 26);
            n /= 26;
            top++;
        } bits[top] = (int)(n % 26) bits[top] bits top (int)(n % 26) n 26 n /= 26 n 26 top++ top for(int i = 0; i < top - 1; i++) {
            if(bits[i] <= 0) {
                bits[i] += 26;
                bits[i + 1]--;
            }
        } int i = 0; int i = 0; i 0 i < top - 1 i top - 1 top 1 i++ i++ i {
            if(bits[i] <= 0) {
                bits[i] += 26;
                bits[i + 1]--;
            }
        } {
            if(bits[i] <= 0) {
                bits[i] += 26;
                bits[i + 1]--;
            }
        } if(bits[i] <= 0) {
                bits[i] += 26;
                bits[i + 1]--;
            } bits[i] <= 0 bits[i] bits i 0 {
                bits[i] += 26;
                bits[i + 1]--;
            } bits[i] += 26 bits[i] bits i 26 bits[i + 1]-- bits[i + 1] bits i + 1 i 1 if(bits[top - 1] == 0) top--; bits[top - 1] == 0 bits[top - 1] bits top - 1 top 1 0 top-- top for(int i = top - 1; i >= 0; i--) {
            System.out.print((char)('a' + bits[i] - 1));
        } int i = top - 1; int i = top - 1; i top - 1 top 1 i >= 0 i 0 i-- i-- i {
            System.out.print((char)('a' + bits[i] - 1));
        } {
            System.out.print((char)('a' + bits[i] - 1));
        } System.out.print((char)('a' + bits[i] - 1)) System.out.print System.out System System.out (char)('a' + bits[i] - 1) 'a' + bits[i] 'a' bits[i] bits i 1 System.out.println() System.out.println System.out System System.out String[] args args public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        int[] bits = new int[12]; //26進数を記録
        int top = 0; //26進表記何桁か
        
        //26進数に変換
        while(n > 0) {
            bits[top] = (int)(n % 26);
            n /= 26;
            top++;
        }

        //下から1以上になるように補正
        for(int i = 0; i < top - 1; i++) {
            if(bits[i] <= 0) {
                bits[i] += 26;
                bits[i + 1]--;
            }
        }
        //最上位の桁(bits[top - 1])が0に繰り下がった場合、topを１減らす
        if(bits[top - 1] == 0) top--;

        //上の桁から出力
        for(int i = top - 1; i >= 0; i--) {
            System.out.print((char)('a' + bits[i] - 1));
        }
        System.out.println();
    }
} public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        int[] bits = new int[12]; //26進数を記録
        int top = 0; //26進表記何桁か
        
        //26進数に変換
        while(n > 0) {
            bits[top] = (int)(n % 26);
            n /= 26;
            top++;
        }

        //下から1以上になるように補正
        for(int i = 0; i < top - 1; i++) {
            if(bits[i] <= 0) {
                bits[i] += 26;
                bits[i + 1]--;
            }
        }
        //最上位の桁(bits[top - 1])が0に繰り下がった場合、topを１減らす
        if(bits[top - 1] == 0) top--;

        //上の桁から出力
        for(int i = top - 1; i >= 0; i--) {
            System.out.print((char)('a' + bits[i] - 1));
        }
        System.out.println();
    }
} Main
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        int[] bits = new int[12]; //26進数を記録
        int top = 0; //26進表記何桁か
        
        //26進数に変換
        while(n > 0) {
            bits[top] = (int)(n % 26);
            n /= 26;
            top++;
        }

        //下から1以上になるように補正
        for(int i = 0; i < top - 1; i++) {
            if(bits[i] <= 0) {
                bits[i] += 26;
                bits[i + 1]--;
            }
        }
        //最上位の桁(bits[top - 1])が0に繰り下がった場合、topを１減らす
        if(bits[top - 1] == 0) top--;

        //上の桁から出力
        for(int i = top - 1; i >= 0; i--) {
            System.out.print((char)('a' + bits[i] - 1));
        }
        System.out.println();
    }
}
