

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);

		long n = sc.nextLong();

		geta = new long[14];
		for(int i = 0; i < geta.length; i++){
			geta[i] = (long)Math.pow(26, i);
			if(i >= 1){
				geta[i] += geta[i - 1];
			}
//			System.out.println(geta[i]);
		}
		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(n >= geta[i]){
				len = i + 1;
				break;
			}
		}

		n -= geta[len - 1];

		String result = "";
		while(true){
			result = (char)(n % 26 + 'a') + result;
			n /= 26;

			if(n == 0){
				break;
			}
		}

		while(result.length() < len){
			result = "a" + result;
		}
		System.out.println(result);
//		geta = new long[14];
//		for(int i = 0; i < geta.length; i++){
//			geta[i] = (long)Math.pow(26, i);
//			if(i >= 1){
//				geta[i] += geta[i - 1];
//			}
//			System.out.println(geta[i]);
//		}
//
//
//		System.out.println(solve(n));

//		if(n == 0){
//			System.out.println('a');
//			return;
//		}
//
//		String name = "";
//		while(n > 0){
//			char tmp = (char)(n%26 + 'a' - 1);
//			if(n%26 == 0){
//				tmp = 'z';
//			}
//			name = tmp + name;
//
//			n /= 26;
//		}
//
//		System.out.println(name);
	}

	static long[] geta;
	static String solve(long num){
		if(num <= 26){
			return (char)(num + 'a' - 1) + "";
		}

		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(num >= geta[i]){
				len = i + 1;
				break;
			}
		}
		System.out.println(len);

		String result = (char)(num / (geta[len - 1] - 1) + 'a')+"";// + solve(num % geta[len - 1] - 1);

		return result;
	}
} import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);

		long n = sc.nextLong();

		geta = new long[14];
		for(int i = 0; i < geta.length; i++){
			geta[i] = (long)Math.pow(26, i);
			if(i >= 1){
				geta[i] += geta[i - 1];
			}
//			System.out.println(geta[i]);
		}
		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(n >= geta[i]){
				len = i + 1;
				break;
			}
		}

		n -= geta[len - 1];

		String result = "";
		while(true){
			result = (char)(n % 26 + 'a') + result;
			n /= 26;

			if(n == 0){
				break;
			}
		}

		while(result.length() < len){
			result = "a" + result;
		}
		System.out.println(result);
//		geta = new long[14];
//		for(int i = 0; i < geta.length; i++){
//			geta[i] = (long)Math.pow(26, i);
//			if(i >= 1){
//				geta[i] += geta[i - 1];
//			}
//			System.out.println(geta[i]);
//		}
//
//
//		System.out.println(solve(n));

//		if(n == 0){
//			System.out.println('a');
//			return;
//		}
//
//		String name = "";
//		while(n > 0){
//			char tmp = (char)(n%26 + 'a' - 1);
//			if(n%26 == 0){
//				tmp = 'z';
//			}
//			name = tmp + name;
//
//			n /= 26;
//		}
//
//		System.out.println(name);
	}

	static long[] geta;
	static String solve(long num){
		if(num <= 26){
			return (char)(num + 'a' - 1) + "";
		}

		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(num >= geta[i]){
				len = i + 1;
				break;
			}
		}
		System.out.println(len);

		String result = (char)(num / (geta[len - 1] - 1) + 'a')+"";// + solve(num % geta[len - 1] - 1);

		return result;
	}
} Main static long[] geta; geta public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);

		long n = sc.nextLong();

		geta = new long[14];
		for(int i = 0; i < geta.length; i++){
			geta[i] = (long)Math.pow(26, i);
			if(i >= 1){
				geta[i] += geta[i - 1];
			}
//			System.out.println(geta[i]);
		}
		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(n >= geta[i]){
				len = i + 1;
				break;
			}
		}

		n -= geta[len - 1];

		String result = "";
		while(true){
			result = (char)(n % 26 + 'a') + result;
			n /= 26;

			if(n == 0){
				break;
			}
		}

		while(result.length() < len){
			result = "a" + result;
		}
		System.out.println(result);
//		geta = new long[14];
//		for(int i = 0; i < geta.length; i++){
//			geta[i] = (long)Math.pow(26, i);
//			if(i >= 1){
//				geta[i] += geta[i - 1];
//			}
//			System.out.println(geta[i]);
//		}
//
//
//		System.out.println(solve(n));

//		if(n == 0){
//			System.out.println('a');
//			return;
//		}
//
//		String name = "";
//		while(n > 0){
//			char tmp = (char)(n%26 + 'a' - 1);
//			if(n%26 == 0){
//				tmp = 'z';
//			}
//			name = tmp + name;
//
//			n /= 26;
//		}
//
//		System.out.println(name);
	} main {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);

		long n = sc.nextLong();

		geta = new long[14];
		for(int i = 0; i < geta.length; i++){
			geta[i] = (long)Math.pow(26, i);
			if(i >= 1){
				geta[i] += geta[i - 1];
			}
//			System.out.println(geta[i]);
		}
		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(n >= geta[i]){
				len = i + 1;
				break;
			}
		}

		n -= geta[len - 1];

		String result = "";
		while(true){
			result = (char)(n % 26 + 'a') + result;
			n /= 26;

			if(n == 0){
				break;
			}
		}

		while(result.length() < len){
			result = "a" + result;
		}
		System.out.println(result);
//		geta = new long[14];
//		for(int i = 0; i < geta.length; i++){
//			geta[i] = (long)Math.pow(26, i);
//			if(i >= 1){
//				geta[i] += geta[i - 1];
//			}
//			System.out.println(geta[i]);
//		}
//
//
//		System.out.println(solve(n));

//		if(n == 0){
//			System.out.println('a');
//			return;
//		}
//
//		String name = "";
//		while(n > 0){
//			char tmp = (char)(n%26 + 'a' - 1);
//			if(n%26 == 0){
//				tmp = 'z';
//			}
//			name = tmp + name;
//
//			n /= 26;
//		}
//
//		System.out.println(name);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) long n = sc.nextLong(); n sc.nextLong() sc.nextLong sc geta = new long[14] geta new long[14] 14 for(int i = 0; i < geta.length; i++){
			geta[i] = (long)Math.pow(26, i);
			if(i >= 1){
				geta[i] += geta[i - 1];
			}
//			System.out.println(geta[i]);
		} int i = 0; int i = 0; i 0 i < geta.length i geta.length geta geta.length i++ i++ i {
			geta[i] = (long)Math.pow(26, i);
			if(i >= 1){
				geta[i] += geta[i - 1];
			}
//			System.out.println(geta[i]);
		} {
			geta[i] = (long)Math.pow(26, i);
			if(i >= 1){
				geta[i] += geta[i - 1];
			}
//			System.out.println(geta[i]);
		} geta[i] = (long)Math.pow(26, i) geta[i] geta i (long)Math.pow(26, i) Math.pow Math 26 i if(i >= 1){
				geta[i] += geta[i - 1];
			} i >= 1 i 1 {
				geta[i] += geta[i - 1];
			} geta[i] += geta[i - 1] geta[i] geta i geta[i - 1] geta i - 1 i 1 int len = 0; len 0 for(int i = geta.length - 1; i >= 0; i--){
			if(n >= geta[i]){
				len = i + 1;
				break;
			}
		} int i = geta.length - 1; int i = geta.length - 1; i geta.length - 1 geta.length geta geta.length 1 i >= 0 i 0 i-- i-- i {
			if(n >= geta[i]){
				len = i + 1;
				break;
			}
		} {
			if(n >= geta[i]){
				len = i + 1;
				break;
			}
		} if(n >= geta[i]){
				len = i + 1;
				break;
			} n >= geta[i] n geta[i] geta i {
				len = i + 1;
				break;
			} len = i + 1 len i + 1 i 1 break; n -= geta[len - 1] n geta[len - 1] geta len - 1 len 1 String result = ""; result "" while(true){
			result = (char)(n % 26 + 'a') + result;
			n /= 26;

			if(n == 0){
				break;
			}
		} true {
			result = (char)(n % 26 + 'a') + result;
			n /= 26;

			if(n == 0){
				break;
			}
		} result = (char)(n % 26 + 'a') + result result (char)(n % 26 + 'a') + result (char)(n % 26 + 'a') n % 26 n 26 'a' result n /= 26 n 26 if(n == 0){
				break;
			} n == 0 n 0 {
				break;
			} break; while(result.length() < len){
			result = "a" + result;
		} result.length() < len result.length() result.length result len {
			result = "a" + result;
		} result = "a" + result result "a" + result "a" result System.out.println(result) System.out.println System.out System System.out result String[] args args static String solve(long num){
		if(num <= 26){
			return (char)(num + 'a' - 1) + "";
		}

		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(num >= geta[i]){
				len = i + 1;
				break;
			}
		}
		System.out.println(len);

		String result = (char)(num / (geta[len - 1] - 1) + 'a')+"";// + solve(num % geta[len - 1] - 1);

		return result;
	} solve {
		if(num <= 26){
			return (char)(num + 'a' - 1) + "";
		}

		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(num >= geta[i]){
				len = i + 1;
				break;
			}
		}
		System.out.println(len);

		String result = (char)(num / (geta[len - 1] - 1) + 'a')+"";// + solve(num % geta[len - 1] - 1);

		return result;
	} if(num <= 26){
			return (char)(num + 'a' - 1) + "";
		} num <= 26 num 26 {
			return (char)(num + 'a' - 1) + "";
		} return (char)(num + 'a' - 1) + ""; (char)(num + 'a' - 1) + "" (char)(num + 'a' - 1) num + 'a' num 'a' 1 "" int len = 0; len 0 for(int i = geta.length - 1; i >= 0; i--){
			if(num >= geta[i]){
				len = i + 1;
				break;
			}
		} int i = geta.length - 1; int i = geta.length - 1; i geta.length - 1 geta.length geta geta.length 1 i >= 0 i 0 i-- i-- i {
			if(num >= geta[i]){
				len = i + 1;
				break;
			}
		} {
			if(num >= geta[i]){
				len = i + 1;
				break;
			}
		} if(num >= geta[i]){
				len = i + 1;
				break;
			} num >= geta[i] num geta[i] geta i {
				len = i + 1;
				break;
			} len = i + 1 len i + 1 i 1 break; System.out.println(len) System.out.println System.out System System.out len String result = (char)(num / (geta[len - 1] - 1) + 'a')+""; result (char)(num / (geta[len - 1] - 1) + 'a')+"" (char)(num / (geta[len - 1] - 1) + 'a') num / (geta[len - 1] - 1) num (geta[len - 1] - 1) geta[len - 1] geta len - 1 len 1 1 'a' "" return result; result long num num public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);

		long n = sc.nextLong();

		geta = new long[14];
		for(int i = 0; i < geta.length; i++){
			geta[i] = (long)Math.pow(26, i);
			if(i >= 1){
				geta[i] += geta[i - 1];
			}
//			System.out.println(geta[i]);
		}
		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(n >= geta[i]){
				len = i + 1;
				break;
			}
		}

		n -= geta[len - 1];

		String result = "";
		while(true){
			result = (char)(n % 26 + 'a') + result;
			n /= 26;

			if(n == 0){
				break;
			}
		}

		while(result.length() < len){
			result = "a" + result;
		}
		System.out.println(result);
//		geta = new long[14];
//		for(int i = 0; i < geta.length; i++){
//			geta[i] = (long)Math.pow(26, i);
//			if(i >= 1){
//				geta[i] += geta[i - 1];
//			}
//			System.out.println(geta[i]);
//		}
//
//
//		System.out.println(solve(n));

//		if(n == 0){
//			System.out.println('a');
//			return;
//		}
//
//		String name = "";
//		while(n > 0){
//			char tmp = (char)(n%26 + 'a' - 1);
//			if(n%26 == 0){
//				tmp = 'z';
//			}
//			name = tmp + name;
//
//			n /= 26;
//		}
//
//		System.out.println(name);
	}

	static long[] geta;
	static String solve(long num){
		if(num <= 26){
			return (char)(num + 'a' - 1) + "";
		}

		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(num >= geta[i]){
				len = i + 1;
				break;
			}
		}
		System.out.println(len);

		String result = (char)(num / (geta[len - 1] - 1) + 'a')+"";// + solve(num % geta[len - 1] - 1);

		return result;
	}
} public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);

		long n = sc.nextLong();

		geta = new long[14];
		for(int i = 0; i < geta.length; i++){
			geta[i] = (long)Math.pow(26, i);
			if(i >= 1){
				geta[i] += geta[i - 1];
			}
//			System.out.println(geta[i]);
		}
		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(n >= geta[i]){
				len = i + 1;
				break;
			}
		}

		n -= geta[len - 1];

		String result = "";
		while(true){
			result = (char)(n % 26 + 'a') + result;
			n /= 26;

			if(n == 0){
				break;
			}
		}

		while(result.length() < len){
			result = "a" + result;
		}
		System.out.println(result);
//		geta = new long[14];
//		for(int i = 0; i < geta.length; i++){
//			geta[i] = (long)Math.pow(26, i);
//			if(i >= 1){
//				geta[i] += geta[i - 1];
//			}
//			System.out.println(geta[i]);
//		}
//
//
//		System.out.println(solve(n));

//		if(n == 0){
//			System.out.println('a');
//			return;
//		}
//
//		String name = "";
//		while(n > 0){
//			char tmp = (char)(n%26 + 'a' - 1);
//			if(n%26 == 0){
//				tmp = 'z';
//			}
//			name = tmp + name;
//
//			n /= 26;
//		}
//
//		System.out.println(name);
	}

	static long[] geta;
	static String solve(long num){
		if(num <= 26){
			return (char)(num + 'a' - 1) + "";
		}

		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(num >= geta[i]){
				len = i + 1;
				break;
			}
		}
		System.out.println(len);

		String result = (char)(num / (geta[len - 1] - 1) + 'a')+"";// + solve(num % geta[len - 1] - 1);

		return result;
	}
} Main


import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);

		long n = sc.nextLong();

		geta = new long[14];
		for(int i = 0; i < geta.length; i++){
			geta[i] = (long)Math.pow(26, i);
			if(i >= 1){
				geta[i] += geta[i - 1];
			}
//			System.out.println(geta[i]);
		}
		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(n >= geta[i]){
				len = i + 1;
				break;
			}
		}

		n -= geta[len - 1];

		String result = "";
		while(true){
			result = (char)(n % 26 + 'a') + result;
			n /= 26;

			if(n == 0){
				break;
			}
		}

		while(result.length() < len){
			result = "a" + result;
		}
		System.out.println(result);
//		geta = new long[14];
//		for(int i = 0; i < geta.length; i++){
//			geta[i] = (long)Math.pow(26, i);
//			if(i >= 1){
//				geta[i] += geta[i - 1];
//			}
//			System.out.println(geta[i]);
//		}
//
//
//		System.out.println(solve(n));

//		if(n == 0){
//			System.out.println('a');
//			return;
//		}
//
//		String name = "";
//		while(n > 0){
//			char tmp = (char)(n%26 + 'a' - 1);
//			if(n%26 == 0){
//				tmp = 'z';
//			}
//			name = tmp + name;
//
//			n /= 26;
//		}
//
//		System.out.println(name);
	}

	static long[] geta;
	static String solve(long num){
		if(num <= 26){
			return (char)(num + 'a' - 1) + "";
		}

		int len = 0;
		for(int i = geta.length - 1; i >= 0; i--){
			if(num >= geta[i]){
				len = i + 1;
				break;
			}
		}
		System.out.println(len);

		String result = (char)(num / (geta[len - 1] - 1) + 'a')+"";// + solve(num % geta[len - 1] - 1);

		return result;
	}
}