import java.util.Scanner;

public class Main {

	public static void main(String... args) throws Exception {
		try (Scanner scn = new Scanner(System.in)){
			System.out.println(to26Str(scn.nextLong()));
		}
		/*
		for(int i=17576; i<=(17576) + 26*26 + 26*2; i++) {
			System.out.println(i + ": " + to26Str(i));
		}
		*/
	}
	// zを0、aを1に割り当てる
	static final char[] chars = "zabcdefghijklmnopqrstuvwxy".toCharArray();
	static final int radix = chars.length;

	public static String to26Str(long num) {
		StringBuilder sb = new StringBuilder();
		do {
			sb.append(chars[(int)(num % radix)]);
			num = (num-1) / radix;	// 0(z)のとき桁上りしない
		} while(0 < num);

		return sb.reverse().toString();
	}

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

	public static void main(String... args) throws Exception {
		try (Scanner scn = new Scanner(System.in)){
			System.out.println(to26Str(scn.nextLong()));
		}
		/*
		for(int i=17576; i<=(17576) + 26*26 + 26*2; i++) {
			System.out.println(i + ": " + to26Str(i));
		}
		*/
	}
	// zを0、aを1に割り当てる
	static final char[] chars = "zabcdefghijklmnopqrstuvwxy".toCharArray();
	static final int radix = chars.length;

	public static String to26Str(long num) {
		StringBuilder sb = new StringBuilder();
		do {
			sb.append(chars[(int)(num % radix)]);
			num = (num-1) / radix;	// 0(z)のとき桁上りしない
		} while(0 < num);

		return sb.reverse().toString();
	}

} Main // zを0、aを1に割り当てる
	static final char[] chars = "zabcdefghijklmnopqrstuvwxy".toCharArray(); chars "zabcdefghijklmnopqrstuvwxy".toCharArray() "zabcdefghijklmnopqrstuvwxy".toCharArray "zabcdefghijklmnopqrstuvwxy" static final int radix = chars.length; radix chars.length chars chars.length public static void main(String... args) throws Exception {
		try (Scanner scn = new Scanner(System.in)){
			System.out.println(to26Str(scn.nextLong()));
		}
		/*
		for(int i=17576; i<=(17576) + 26*26 + 26*2; i++) {
			System.out.println(i + ": " + to26Str(i));
		}
		*/
	} main {
		try (Scanner scn = new Scanner(System.in)){
			System.out.println(to26Str(scn.nextLong()));
		}
		/*
		for(int i=17576; i<=(17576) + 26*26 + 26*2; i++) {
			System.out.println(i + ": " + to26Str(i));
		}
		*/
	} try (Scanner scn = new Scanner(System.in)){
			System.out.println(to26Str(scn.nextLong()));
		} {
			System.out.println(to26Str(scn.nextLong()));
		} Scanner scn = new Scanner(System.in) Scanner scn = new Scanner(System.in) new Scanner(System.in) System.out.println(to26Str(scn.nextLong())) System.out.println System.out System System.out to26Str(scn.nextLong()) to26Str scn.nextLong() scn.nextLong scn String... args args public static String to26Str(long num) {
		StringBuilder sb = new StringBuilder();
		do {
			sb.append(chars[(int)(num % radix)]);
			num = (num-1) / radix;	// 0(z)のとき桁上りしない
		} while(0 < num);

		return sb.reverse().toString();
	} to26Str {
		StringBuilder sb = new StringBuilder();
		do {
			sb.append(chars[(int)(num % radix)]);
			num = (num-1) / radix;	// 0(z)のとき桁上りしない
		} while(0 < num);

		return sb.reverse().toString();
	} StringBuilder sb = new StringBuilder(); sb new StringBuilder() do {
			sb.append(chars[(int)(num % radix)]);
			num = (num-1) / radix;	// 0(z)のとき桁上りしない
		} while(0 < num); 0 < num 0 num {
			sb.append(chars[(int)(num % radix)]);
			num = (num-1) / radix;	// 0(z)のとき桁上りしない
		} sb.append(chars[(int)(num % radix)]) sb.append sb chars[(int)(num % radix)] chars (int)(num % radix) num radix num = (num-1) / radix num (num-1) / radix (num-1) num 1 radix return sb.reverse().toString(); sb.reverse().toString() sb.reverse().toString sb.reverse() sb.reverse sb long num num public class Main {

	public static void main(String... args) throws Exception {
		try (Scanner scn = new Scanner(System.in)){
			System.out.println(to26Str(scn.nextLong()));
		}
		/*
		for(int i=17576; i<=(17576) + 26*26 + 26*2; i++) {
			System.out.println(i + ": " + to26Str(i));
		}
		*/
	}
	// zを0、aを1に割り当てる
	static final char[] chars = "zabcdefghijklmnopqrstuvwxy".toCharArray();
	static final int radix = chars.length;

	public static String to26Str(long num) {
		StringBuilder sb = new StringBuilder();
		do {
			sb.append(chars[(int)(num % radix)]);
			num = (num-1) / radix;	// 0(z)のとき桁上りしない
		} while(0 < num);

		return sb.reverse().toString();
	}

} public class Main {

	public static void main(String... args) throws Exception {
		try (Scanner scn = new Scanner(System.in)){
			System.out.println(to26Str(scn.nextLong()));
		}
		/*
		for(int i=17576; i<=(17576) + 26*26 + 26*2; i++) {
			System.out.println(i + ": " + to26Str(i));
		}
		*/
	}
	// zを0、aを1に割り当てる
	static final char[] chars = "zabcdefghijklmnopqrstuvwxy".toCharArray();
	static final int radix = chars.length;

	public static String to26Str(long num) {
		StringBuilder sb = new StringBuilder();
		do {
			sb.append(chars[(int)(num % radix)]);
			num = (num-1) / radix;	// 0(z)のとき桁上りしない
		} while(0 < num);

		return sb.reverse().toString();
	}

} Main
import java.util.Scanner;

public class Main {

	public static void main(String... args) throws Exception {
		try (Scanner scn = new Scanner(System.in)){
			System.out.println(to26Str(scn.nextLong()));
		}
		/*
		for(int i=17576; i<=(17576) + 26*26 + 26*2; i++) {
			System.out.println(i + ": " + to26Str(i));
		}
		*/
	}
	// zを0、aを1に割り当てる
	static final char[] chars = "zabcdefghijklmnopqrstuvwxy".toCharArray();
	static final int radix = chars.length;

	public static String to26Str(long num) {
		StringBuilder sb = new StringBuilder();
		do {
			sb.append(chars[(int)(num % radix)]);
			num = (num-1) / radix;	// 0(z)のとき桁上りしない
		} while(0 < num);

		return sb.reverse().toString();
	}

}
