/*
	AOJ_0110: Alphametic
*/
#include	<iostream>
#include	<string>
#include	<cstdlib>
#include	<algorithm>

using namespace std;

int Alp_calc(string);
string convert_Xtoi(string, int);
string calc_AddofNumString(string, string);

int main(void) {
	string str;
	int result;

	while (1) {
		cin >> str;
		if (cin.eof()) { break; }

		result = Alp_calc(str);
		if (result != -1) { cout << result << endl; }
		else { cout << "NA" << endl; }
	}
	return 0;
}

int Alp_calc(string str) {
	string sect_1, sect_2, solution;

	string::iterator it = str.begin();
	while (*it != '+') {
		sect_1 += *it;
		it++;
	} it++;
	while (*it != '=') {
		sect_2 += *it;
		it++;
	} it++;
	while (it != str.end()) {
		solution += *it;
		it++;
	}
	for (int i = 0; i < 10; i++) {
		string _bf1, _bf2, _bfs, _buff;

		_bf1 = convert_Xtoi(sect_1, i);
		_bf2 = convert_Xtoi(sect_2, i);
		_bfs = convert_Xtoi(solution, i);

		_buff = calc_AddofNumString(_bf1, _bf2);
		if (_buff == _bfs) { return i; }
	}

	return -1;
}

string convert_Xtoi(string str, int n) {
	string::iterator it = str.begin();
	while (it != str.end()) {
		if (*it == 'X') { *it = n + '0'; }
		it++;
	}
	return str;
}

string calc_AddofNumString(string str1, string str2) {
	bool f1 = false, f2 = false, carry = false;
	char bb;
	int s1_i = 0, s2_i = 0;
	const int s1_mx = str1.length(), s2_mx = str2.length();
	string result;

	reverse(str1.begin(), str1.end());
	reverse(str2.begin(), str2.end());
	while ((s1_i < s1_mx) || (s2_i < s2_mx) || carry == true) {
		if (carry == true) { bb = '1'; carry = false; }
		else { bb = '0'; }
		if (s1_i < s1_mx) { bb += str1.at(s1_i) - '0'; }
		if (s2_i < s2_mx) { bb += str2.at(s2_i) - '0'; }
		if (bb > '9') { bb -= 10; carry = true; }
		result += bb;
		s1_i++; s2_i++;
	}

	reverse(result.begin(), result.end());
	return result;
}