/*
AizuOnline A0000
Title
*/
#include <stdio.h>
// Select Below
//#include <stdlib.h>
//#include <string.h>
//#include <float.h>
//#include <math.h>
//#include <limits.h>
//Global data section
int n;
char msg[1025];
char key[10][5] = {{'\0'},
		   {'.',',','!','?',' '},
                   {'a','b','c'},
		   {'d','e','f'},
		   {'g','h','i'},
		   {'j','k','l'},
		   {'m','n','o'},
		   {'p','q','r','s'},
		   {'t','u','v'},
		   {'w','x','y','z'}};
struct RUN {
  char chr;
  int  len;} runlen[513];
char res[77]; 
struct RUN *pRUN;
//
int shrink()
{
  char * sp,c,c1;
  int len1;
  
  len1=0;
  sp = msg;pRUN = runlen;c1 = '\0';    //runlen[0] dummy
  while(c = *sp)
    {
      //printf("%c:\n",c);
      if(c == c1)
	pRUN->len++;
      else
	{
	  pRUN ++;
	  len1++;
	  pRUN->len=0;
	  pRUN->chr = c;
	}
      c1 = c;sp ++;
    }
  return(len1);
}
void expand(int len)
{
  int i;
  char c;
  char *p;

  for(i=0;i<77;i++)
    res[i]='\0';
  p = res;

  for(i=1;i<len;i++)   // 0th dummy
    {
      c=runlen[i].chr;
      if(c=='0')continue;
      if(c=='7' ||c=='9')
	*p = key[c-'0'][(runlen[i].len % 4)];
      else if (c == '1')
	*p = key[c-'0'][(runlen[i].len % 5)];
      else
	*p = key[c-'0'][(runlen[i].len % 3)];
      p++;
    }
  p='\0';
}
main()
{
  int len,i;

  scanf("%d",&n);
  for(i=0;i<n;i++)
    {
      scanf("%s",msg);
      //printf("S=%s\n",msg);
      len=shrink();
      //printf("LEN=%d\n",len);
      expand(len);
      printf("%s\n",res);
    }
return(0);
}