/*****include*****/
#include <iostream>
#include <string>
/*****デバッグ定義*****/
//#define DEBUG
/*****マクロ定義*****/

/*****名前空間*****/
using namespace std;

/*****グローバル変数置き場*****/

/*****その他関数置き場*****/

/*****main関数*****/
int main(){
	/*****変数置き場*****/
	string number;
	string num;
	char c_x;
	char c_y;
	int x;
	int y;
	bool fail;
	char table[6][7] = {
		{'0','0','0','0','0','0','0'},
		{'0','a','f','k','p','u','z'},
		{'0','b','g','l','q','v','.'},
		{'0','c','h','m','r','w','?'},
		{'0','d','i','n','s','x','!'},
		{'0','e','j','o','t','y',' '}
	};
	string answer;
	/*****処理部*****/
	while(1){
		cin >> number;
		if(cin.eof())	break;
		fail = false;
		answer = "";
		if(number.length()%2 != 0){
			fail = true;
		}else{
			for(int i=0;i<number.length();i+=2){
				num = number.substr(i,2);
				c_x = num[0];
				c_y = num[1];
				x = c_x - '0';
				y = c_y - '0';
				if(x<=0 || x>6 || y<=0 || y>5){
					fail = true;
					break;
				}
				answer.append(1,table[y][x]);
				//cout << table[y][x];
			}
		}
		if(fail)	cout << "NA" << endl;
		else
			cout << answer << endl;
	}
	/*****処理終了後*****/
	return 0;
}