#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <complex>
#include <ctime>
#include <cstdlib>

using namespace std;

inline int to_int(string s) {int v; istringstream sin(s); sin >> v; return v;}
template<class T> inline string to_str(T x) {ostringstream sout; sout << x; return sout.str();}

typedef long long ll;
const int N_MAX = 128;
int T[4][N_MAX];

bool jud()
{
	int plus[N_MAX] = {0};

	for(int i = 0; i < N_MAX; i++)
	{
		plus[i] += T[0][i] + T[1][i];
		while(plus[i] >= 10)
		{
			plus[i+1]++;
			plus[i] -= 10;
		}
	}
	bool res = true;

	for(int i = 0; i < 10; i++)
	{
		if(T[2][i] != plus[i])
		{
			res = false;
			break;
		}
		//printf("%d:%d \n",plus[i] ,T[2][i]);
	}
	//puts("");
	
	return res;
}

int main()
{
	string str;
	while(cin >> str)
	{
		for(char i = '0'; i <= '9'; i++)
		{
			memset(T, 0, sizeof(T));
			string s;
			s = str;
			int m;
			while(s.find('X') != string::npos)
			{
				m = s.find('X');
				s[m] = i;
			}
			int n = s.find('+'), l = s.find('=');
			string S[3];
			S[0] = s.substr(0, n);
			S[1] = s.substr(n+1, l-n-1);
			S[2] = s.substr(l+1, s.size()-1);
			
			//printf("%s %s %s\n",S[0].c_str() ,S[1].c_str() ,S[2].c_str());
			for(int j = 0; j < 3; j++)
			{
				for(int k = 0; k < S[j].size(); k++)
				{		
					T[j][k] = S[j][S[j].size()-k-1] - '0';
				}
			}
			if(jud())
			{
				cout << i << endl;
				break;
			}
			else if(i == '9')
			{
				cout << "NA" << endl;
				break;
			}
		}
	}
}