import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		long num = in.nextLong();
		String s;
		long firstIndexAlpha = (long) 'a'; // アルファベットの最初の文字
		long sizeAlpha = 26; // アルファベットの個数
		if (num <= 0) {
			/* 0以下はブランクで返す */
			

		} else if (num <= sizeAlpha) {
			/* 1～26までの処理 */
			s = String.valueOf((char) (firstIndexAlpha + num - 1));
			System.out.println(s);

		} else {
			/* 27以上の処理 */

			long offset = num - 1; // 0からの連番に補正した値
			long tmp = offset;
			String str = "";
			while (true) {
				long div = tmp / sizeAlpha; // 商
				long mod = tmp % sizeAlpha; // あまり
				/* 1～26までの処理 */
				s = String.valueOf((char) (firstIndexAlpha + mod));
				str = s + str;
				if (div <= 0) {
					break;
				}
				tmp = (div - 1);
			}
			System.out.println(str);

		}
	}
} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		long num = in.nextLong();
		String s;
		long firstIndexAlpha = (long) 'a'; // アルファベットの最初の文字
		long sizeAlpha = 26; // アルファベットの個数
		if (num <= 0) {
			/* 0以下はブランクで返す */
			

		} else if (num <= sizeAlpha) {
			/* 1～26までの処理 */
			s = String.valueOf((char) (firstIndexAlpha + num - 1));
			System.out.println(s);

		} else {
			/* 27以上の処理 */

			long offset = num - 1; // 0からの連番に補正した値
			long tmp = offset;
			String str = "";
			while (true) {
				long div = tmp / sizeAlpha; // 商
				long mod = tmp % sizeAlpha; // あまり
				/* 1～26までの処理 */
				s = String.valueOf((char) (firstIndexAlpha + mod));
				str = s + str;
				if (div <= 0) {
					break;
				}
				tmp = (div - 1);
			}
			System.out.println(str);

		}
	}
} Main public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		long num = in.nextLong();
		String s;
		long firstIndexAlpha = (long) 'a'; // アルファベットの最初の文字
		long sizeAlpha = 26; // アルファベットの個数
		if (num <= 0) {
			/* 0以下はブランクで返す */
			

		} else if (num <= sizeAlpha) {
			/* 1～26までの処理 */
			s = String.valueOf((char) (firstIndexAlpha + num - 1));
			System.out.println(s);

		} else {
			/* 27以上の処理 */

			long offset = num - 1; // 0からの連番に補正した値
			long tmp = offset;
			String str = "";
			while (true) {
				long div = tmp / sizeAlpha; // 商
				long mod = tmp % sizeAlpha; // あまり
				/* 1～26までの処理 */
				s = String.valueOf((char) (firstIndexAlpha + mod));
				str = s + str;
				if (div <= 0) {
					break;
				}
				tmp = (div - 1);
			}
			System.out.println(str);

		}
	} main {
		Scanner in = new Scanner(System.in);
		long num = in.nextLong();
		String s;
		long firstIndexAlpha = (long) 'a'; // アルファベットの最初の文字
		long sizeAlpha = 26; // アルファベットの個数
		if (num <= 0) {
			/* 0以下はブランクで返す */
			

		} else if (num <= sizeAlpha) {
			/* 1～26までの処理 */
			s = String.valueOf((char) (firstIndexAlpha + num - 1));
			System.out.println(s);

		} else {
			/* 27以上の処理 */

			long offset = num - 1; // 0からの連番に補正した値
			long tmp = offset;
			String str = "";
			while (true) {
				long div = tmp / sizeAlpha; // 商
				long mod = tmp % sizeAlpha; // あまり
				/* 1～26までの処理 */
				s = String.valueOf((char) (firstIndexAlpha + mod));
				str = s + str;
				if (div <= 0) {
					break;
				}
				tmp = (div - 1);
			}
			System.out.println(str);

		}
	} Scanner in = new Scanner(System.in); in new Scanner(System.in) long num = in.nextLong(); num in.nextLong() in.nextLong in String s; s long firstIndexAlpha = (long) 'a'; firstIndexAlpha (long) 'a' long sizeAlpha = 26; sizeAlpha 26 if (num <= 0) {
			/* 0以下はブランクで返す */
			

		} else if (num <= sizeAlpha) {
			/* 1～26までの処理 */
			s = String.valueOf((char) (firstIndexAlpha + num - 1));
			System.out.println(s);

		} else {
			/* 27以上の処理 */

			long offset = num - 1; // 0からの連番に補正した値
			long tmp = offset;
			String str = "";
			while (true) {
				long div = tmp / sizeAlpha; // 商
				long mod = tmp % sizeAlpha; // あまり
				/* 1～26までの処理 */
				s = String.valueOf((char) (firstIndexAlpha + mod));
				str = s + str;
				if (div <= 0) {
					break;
				}
				tmp = (div - 1);
			}
			System.out.println(str);

		} num <= 0 num 0 {
			/* 0以下はブランクで返す */
			

		} if (num <= sizeAlpha) {
			/* 1～26までの処理 */
			s = String.valueOf((char) (firstIndexAlpha + num - 1));
			System.out.println(s);

		} else {
			/* 27以上の処理 */

			long offset = num - 1; // 0からの連番に補正した値
			long tmp = offset;
			String str = "";
			while (true) {
				long div = tmp / sizeAlpha; // 商
				long mod = tmp % sizeAlpha; // あまり
				/* 1～26までの処理 */
				s = String.valueOf((char) (firstIndexAlpha + mod));
				str = s + str;
				if (div <= 0) {
					break;
				}
				tmp = (div - 1);
			}
			System.out.println(str);

		} num <= sizeAlpha num sizeAlpha {
			/* 1～26までの処理 */
			s = String.valueOf((char) (firstIndexAlpha + num - 1));
			System.out.println(s);

		} s = String.valueOf((char) (firstIndexAlpha + num - 1)) s String.valueOf((char) (firstIndexAlpha + num - 1)) String.valueOf String (char) (firstIndexAlpha + num - 1) firstIndexAlpha + num firstIndexAlpha num 1 System.out.println(s) System.out.println System.out System System.out s {
			/* 27以上の処理 */

			long offset = num - 1; // 0からの連番に補正した値
			long tmp = offset;
			String str = "";
			while (true) {
				long div = tmp / sizeAlpha; // 商
				long mod = tmp % sizeAlpha; // あまり
				/* 1～26までの処理 */
				s = String.valueOf((char) (firstIndexAlpha + mod));
				str = s + str;
				if (div <= 0) {
					break;
				}
				tmp = (div - 1);
			}
			System.out.println(str);

		} long offset = num - 1; offset num - 1 num 1 long tmp = offset; tmp offset String str = ""; str "" while (true) {
				long div = tmp / sizeAlpha; // 商
				long mod = tmp % sizeAlpha; // あまり
				/* 1～26までの処理 */
				s = String.valueOf((char) (firstIndexAlpha + mod));
				str = s + str;
				if (div <= 0) {
					break;
				}
				tmp = (div - 1);
			} true {
				long div = tmp / sizeAlpha; // 商
				long mod = tmp % sizeAlpha; // あまり
				/* 1～26までの処理 */
				s = String.valueOf((char) (firstIndexAlpha + mod));
				str = s + str;
				if (div <= 0) {
					break;
				}
				tmp = (div - 1);
			} long div = tmp / sizeAlpha; div tmp / sizeAlpha tmp sizeAlpha long mod = tmp % sizeAlpha; mod tmp % sizeAlpha tmp sizeAlpha s = String.valueOf((char) (firstIndexAlpha + mod)) s String.valueOf((char) (firstIndexAlpha + mod)) String.valueOf String (char) (firstIndexAlpha + mod) firstIndexAlpha mod str = s + str str s + str s str if (div <= 0) {
					break;
				} div <= 0 div 0 {
					break;
				} break; tmp = (div - 1) tmp (div - 1) div 1 System.out.println(str) System.out.println System.out System System.out str String[] args args public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		long num = in.nextLong();
		String s;
		long firstIndexAlpha = (long) 'a'; // アルファベットの最初の文字
		long sizeAlpha = 26; // アルファベットの個数
		if (num <= 0) {
			/* 0以下はブランクで返す */
			

		} else if (num <= sizeAlpha) {
			/* 1～26までの処理 */
			s = String.valueOf((char) (firstIndexAlpha + num - 1));
			System.out.println(s);

		} else {
			/* 27以上の処理 */

			long offset = num - 1; // 0からの連番に補正した値
			long tmp = offset;
			String str = "";
			while (true) {
				long div = tmp / sizeAlpha; // 商
				long mod = tmp % sizeAlpha; // あまり
				/* 1～26までの処理 */
				s = String.valueOf((char) (firstIndexAlpha + mod));
				str = s + str;
				if (div <= 0) {
					break;
				}
				tmp = (div - 1);
			}
			System.out.println(str);

		}
	}
} public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		long num = in.nextLong();
		String s;
		long firstIndexAlpha = (long) 'a'; // アルファベットの最初の文字
		long sizeAlpha = 26; // アルファベットの個数
		if (num <= 0) {
			/* 0以下はブランクで返す */
			

		} else if (num <= sizeAlpha) {
			/* 1～26までの処理 */
			s = String.valueOf((char) (firstIndexAlpha + num - 1));
			System.out.println(s);

		} else {
			/* 27以上の処理 */

			long offset = num - 1; // 0からの連番に補正した値
			long tmp = offset;
			String str = "";
			while (true) {
				long div = tmp / sizeAlpha; // 商
				long mod = tmp % sizeAlpha; // あまり
				/* 1～26までの処理 */
				s = String.valueOf((char) (firstIndexAlpha + mod));
				str = s + str;
				if (div <= 0) {
					break;
				}
				tmp = (div - 1);
			}
			System.out.println(str);

		}
	}
} Main
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		long num = in.nextLong();
		String s;
		long firstIndexAlpha = (long) 'a'; // アルファベットの最初の文字
		long sizeAlpha = 26; // アルファベットの個数
		if (num <= 0) {
			/* 0以下はブランクで返す */
			

		} else if (num <= sizeAlpha) {
			/* 1～26までの処理 */
			s = String.valueOf((char) (firstIndexAlpha + num - 1));
			System.out.println(s);

		} else {
			/* 27以上の処理 */

			long offset = num - 1; // 0からの連番に補正した値
			long tmp = offset;
			String str = "";
			while (true) {
				long div = tmp / sizeAlpha; // 商
				long mod = tmp % sizeAlpha; // あまり
				/* 1～26までの処理 */
				s = String.valueOf((char) (firstIndexAlpha + mod));
				str = s + str;
				if (div <= 0) {
					break;
				}
				tmp = (div - 1);
			}
			System.out.println(str);

		}
	}
}