import kotlin.math.pow

fun main()
{
  val n = readLine()!!.toLong() - 1

  // 文字列長を求める
  var keta = 0
  var k: Long = 0
  while (true) {
    var tmp: Long = 1;
    for (x in 0..keta) tmp *= 26
    k += tmp
    keta++
    if (k > n) break
  }

  // その桁内で何番目かを求める
  var idx = n
  for (b in 1..keta-1) {
    var tmp: Long = 1
    for (x in 1..b) tmp *= 26
    idx -= tmp
  }
  //println("keta: $keta")
  //println("idx: $idx")

  // 26進数とみなして変換
  val alphabets = ('a'..'z').toList()
  val s = mutableListOf<Char>()
  for (x in 1..keta) {
    s.add(alphabets[(idx % 26).toInt()])
    idx = ((idx - (idx % 26)) / 26)
  }
  println(s.asReversed().joinToString(""))
}
