#-*- coding:utf-8 -*-
import sys

#入力されたデータに関して携帯のキーを返す
def decode_keitai(str):

    #携帯キーを表す配列を作成
    keitai_keys = [" ","',.!?","abcABC","defDEF","ghiGHI","jklJKL","mnoMNO","pqrsPQRS","tuvTUV","wxyzWXYZ"]

    #結果文字列
    results = []

    #入力文字列をリストに変換
    inputs = str.split("\n")

    #各文字列について
    for input in inputs:

        result = "" #デコード結果
        #前の文字
        s_before = ""

        #文字列の最後まで
        while len(str) > 0:

            #文頭の1文字を取得
            s = str[0]
            str = str[1:]
            print s

            #最初の1文字ならcontinue
            if s_before == "":
                s_before = s
                continue

            #最初の1文字が前の文字と違うなら携帯コードにデコード
            if not s in s_before:
                if s_before[0] == "0":
                    result += s_before[:-1].replace("0"," ")
                else:
                    id = int(s_before[0])
                    keylen = len(keitai_keys[id])
                    result += keitai_keys[id][(len(s_before)-1)%keylen]
                s_before = s
            else:
                s_before += s
            

        #最後に残った文字列を変換
        if len(s_before) > 0:
            if s_before[0] == "0":
                result += s_before[:-1].replace("0"," ")
            else:
                id = int(s_before[0])
                keylen = len(keitai_keys[id])
                result += keitai_keys[id][(len(s_before)-1)%keylen]

        results.append(result)

    return "\n".join(results)

if __name__=="__main__":
    print decode_keitai(sys.argv[1])

### FIXED CODE ###

#-*- coding:utf-8 -*-
import sys

#入力されたデータに関して携帯のキーを返す
def decode_keitai(str):

    #携帯キーを表す配列を作成
    keitai_keys = [" ","',.!?","abcABC","defDEF","ghiGHI","jklJKL","mnoMNO","pqrsPQRS","tuvTUV","wxyzWXYZ"]

    #結果文字列
    results = []

    #入力文字列をリストに変換
    inputs = str.split("\n")

    #各文字列について
    for input in inputs:

        input = input.replace("\n","")
        result = "" #デコード結果
        #前の文字
        s_before = ""

        #文字列の最後まで
        while len(input) > 0:

            #文頭の1文字を取得
            s = input[0]
            input = input[1:]

            #最初の1文字ならcontinue
            if s_before == "":
                s_before = s
                continue

            #最初の1文字が前の文字と違うなら携帯コードにデコード
            if not s in s_before:
                if s_before[0] == "0":
                    result += s_before[:-1].replace("0"," ")
                else:
                    id = int(s_before[0])
                    keylen = len(keitai_keys[id])
                    result += keitai_keys[id][(len(s_before)-1)%keylen]
                s_before = s
            else:
                s_before += s
            

        #最後に残った文字列を変換
        if len(s_before) > 0:
            if s_before[0] == "0":
                result += s_before[:-1].replace("0"," ")
            else:
                id = int(s_before[0])
                keylen = len(keitai_keys[id])
                result += keitai_keys[id][(len(s_before)-1)%keylen]
            s_before = ""

        results.append(result)

    return "\n".join(results)

if __name__=="__main__":
    lines = []
    for line in sys.stdin:
        lines.append(line.replace("\n",""))
    print decode_keitai("\n".join(lines))