#include <iostream>
#include <vector>
#include <string>
class PocketBell {
public:
	std::string decode(const std::string &str) const {
		if (str.size() == 0) {
			return "";
		}
		else if ((str.size() & 1) == 1) {
			return "NA";
		}
		else {
			auto head = str.substr(0, 2);
			auto tail = decode(str.substr(2));
			if (tail == "NA" || !is_valid(head)) {
				return "NA";
			}
			else {
				return at(head) + tail;
			}
		}
	}
private:
	bool is_valid(const std::string &str) const {
		auto n = std::stoi(str);
		return (n / 10) > 0 && (n / 10) < 7 && (n % 10) > 0 && (n % 10) < 6;
	}
	char at(const std::string &str) const {
		auto n = std::stoi(str);
		return key.at((n / 10) * 5 + n % 10 - 6);
	}
	static const std::vector<char> key;
};
const std::vector<char> PocketBell::key{ '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', '.', '?', '!', ' ' };

int main() {
	PocketBell bell;
	for (std::string str; std::cin >> str;) {
		std::cout << bell.decode(str) << std::endl;
	}
	return 0;
}