#define _CRT_SECURE_NO_WARNINGS
#include"bits/stdc++.h"
#ifdef _DEBUG
#define DBG(n) n
#else
#define DBG(n)
#endif
#define INF         1e9
#define INFLL       1e18
#define EPS         1e-9
#define REP(i,n)    for(ll i=0,i##_len=(n);i<i##_len;++i)
#define REP1(i,n)   for(ll i=1,i##_len=(n);i<=i##_len;++i)
#define REPR(i,n)   for(ll i=(n)-1;i>=0;--i)
#define REPR1(i,n)  for(ll i=(n);i>0;--i)
#define REPC(i,obj) for(auto i:obj)
#define ALL(obj)    (obj).begin(),(obj).end()
#define SETP(n)     cout<<fixed<<setprecision(n)
using namespace std;
using ll = long long;
template<typename T = ll>inline T in() { T ret; cin >> ret; return ret; }

string add(const string&_arg1, const string&_arg2)
{
	string arg1 = _arg1, arg2 = _arg2;
	string zero;
	REP(i, abs((ll)arg1.length() - (ll)arg2.length()))zero.push_back('0');
	if (arg1.length() < arg2.length()) {
		arg1 = zero + arg1;
	} else {
		arg2 = zero + arg2;
	}
	string ret;
	int carry = 0;
	auto ctoi = [](char c) {return c - '0'; };
	auto itoc = [](int n) {return (char)('0' + n); };
	REPR(i, arg1.length()) {
		int foo = ctoi(arg1[i]) + ctoi(arg2[i]) + carry;
		ret.push_back(itoc(foo % 10));
		carry = foo / 10;
	}
	if (carry != 0)ret.push_back(itoc(carry));
	reverse(ALL(ret));
	return ret;
}
signed main()
{
	string inpt;
	while (cin >> inpt) {
		bool f = false;
		REP(i, 10) {
			string cp = inpt;
			replace(ALL(cp), 'X', (char)('0' + i));
			replace(ALL(cp), '+', ' ');
			replace(ALL(cp), '=', ' ');
			string arg1, arg2, ans;
			stringstream ss(cp);
			ss >> arg1 >> arg2 >> ans;
			if (add(arg1, arg2) == ans) {
				cout << i << endl;
				f = true;
				break;
			}
		}
		if (!f) {
			cout << "NA" << endl;
		}
	}
}
