#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#include <queue>
 
using namespace std;
 
#define pb(n)	push_back(n)
#define mp(n,m) make_pair(n,m)
#define fi 	first
#define se 	second
#define all(r) (r).begin(),(r).end()

#define rep(i,n) for(int i=0; i<(n); i++)
#define repc(i,a,b) for(int i=(a); i<(b); i++)

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
 
const int IMAX=((1<<30)-1)*2+1;
const double EPS=1e-10;
//int mod=1000000007


vector<string> s(3),v;
string t;
bool can_zero;
int ans;




int main(){
	while(cin>>t){
		for(int i=0; i<t.size(); i++){
			if(t[i]=='+'){
				s[0]=t.substr(0,i);
				for(int j=i+1; j<t.size(); j++){
					if(t[j]=='='){
						s[1]=t.substr(i+1,j-i-1);
						s[2]=t.substr(j+1);
						break;
					}
				}
				break;
			}
		}
		//cout<<s[0]<<"+"<<s[1]<<"="<<s[2]<<endl;
		can_zero=true;
		if(s[0][0]=='X'||s[1][0]=='X'||s[2][0]=='X')can_zero=false;
		v=s;
		ans=-1;
		for(int i=(can_zero?0:1); i<10; i++){
			for(int j=0; j<3; j++){
				for(int k=0; k<v[j].size(); k++){
					if(s[j][k]=='X')v[j][k]=(char)(i+'0');
				}
			}
			//cout<<v[0]<<"+"<<v[1]<<"="<<v[2]<<" "<<atoi(s[0].c_str())<<" "<<atoi(s[1].c_str())<<" "<<atoi(s[2].c_str())<<endl;
			if((atoi(v[0].c_str())+atoi(v[1].c_str()))==atoi(v[2].c_str())){
				ans=i;
				break;
			}
		}
		if(ans<0)cout<<"NA"<<endl;
		else cout<<ans<<endl;
	}
}