
import std.stdio, std.conv, std.algorithm, std.array;

bool error;

char conv(int i, int j) {
  int n = (i - 1) * 5 + j;
  if (n < 27) {
    return cast(char)('a' + (n - 1));
  }
  else if (n <= 30) {
    auto table = [27: '.', 28: '?', 29: '!', 30: ' '];
    return table[n];
  }
  else
    error = true;
  return '0';   // dumy
}

void main() {
  string str;
  while(readf("%s\n", &str)) {
    int[] nums = str.map!((x) => x.to!int - '0').array;
    char[] line;
    error = false;
    if ((nums.length & 1) == 1) error = true;
    for(int i = 0; i < nums.length - 1; i += 2) {
      line ~= conv(nums[i], nums[i + 1]);
    }
    writeln(error ? "NA" : line);
  }
}