#include <iostream>
#include <cstdio>
#include <stdlib.h>
#include <cstring>

using namespace std;

#define N 10001

char s[N];

struct node
{
	int x;
	int count;
}a[N];
int p;

char *key[10]={" ", "',.!?", "abcABC", "defDEF", "ghiGHI", "jklJKL", "mnoMNO", "pqrsPQRS", "tuvTUV", "wxyzWXYZ"};

int main()
{

	while(scanf("%s",s)!=EOF)
	{
		p=0;
		int len=strlen(s);
		int i,j,temp=1;;
		char pre=s[0];
		for(i=1;i<len;i++)
			if(pre!=s[i])
			{
				a[p].x=pre-'0';
				if(a[p].x==1)
				a[p].count=(temp-1)%5;
				else if(a[p].x==0)
					a[p].count=temp-1;
				else if(a[p].x==7 || a[p].x== 9)
					a[p].count=(temp-1) % 8;
				else
					a[p].count=(temp-1)%6;

				temp=1;
				p++;
				pre=s[i];
			}
			else
				temp++;

				a[p].x=pre-'0';
				if(a[p].x==1)
				a[p].count=(temp-1)%5;
				else if(a[p].x==0)
					a[p].count=temp-1;
				else if(a[p].x==7 || a[p].x== 9)
					a[p].count=(temp-1) % 8;
				else
					a[p].count=(temp-1)%6;
			
			temp=1;
				p++;


			for(i=0;i<p;i++)
				if(a[i].x==0)
					for(j=0;j<a[i].count;j++)
						printf(" ");
					else
						printf("%c",key[a[i].x][a[i].count]);

					printf("\n");
	}

	return 0;
}