#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
#include <vector>
#include <utility>
#include <cstring>
#include <iomanip>
#include <numeric>
#include <cmath>
#include <queue>
#include <map>
using namespace std;
typedef long long ll;
const int INF = 1<<30; 
const int MOD = 1e9 + 7;
bool check(string s)
{
    if(s.size() >= 2 && s[0] == 'X') return true;
    return false;
}
void get_str(string &s)
{
    string tmp = "";
    for(int i = s.size(); i <= 130; i++) tmp += '0';
    s = tmp + s;
}
int to_int(char ch) { return ch - '0'; }
int main()
{
    cin.tie(0);
    ios::sync_with_stdio(false);
    string s;
    while(cin >> s)
    {
        int p = s.find('+'), q = s.find('=');
        string a = s.substr(0, p), b = s.substr(p + 1, q - p - 1), c = s.substr(q + 1);
        int ans = -1;
        bool flag = false;
        if(check(a) || check(b) || check(c)) flag = true;
        for(char k = (flag ? '1' : '0'); k <= '9'; k++)
        {
            string ta, tb, tc; ta = tb = tc = "";
            for(int i = 0; i < a.size(); i++) ta += (a[i] == 'X' ? k : a[i]);
            for(int i = 0; i < b.size(); i++) tb += (b[i] == 'X' ? k : b[i]);
            for(int i = 0; i < c.size(); i++) tc += (c[i] == 'X' ? k : c[i]);
            get_str(ta); get_str(tb); get_str(tc);
            int inc = 0;
            bool ok = true;
            for(int i = ta.size() - 1; i >= 0; i--)
            {
                if(ok == false) break;
                int left = to_int(ta[i]) + to_int(tb[i]) + inc;
                int right = to_int(tc[i]);
                if(left >= 10)
                {
                    left %= 10;
                    inc = 1;
                }
                else inc = 0;
                if(left != right) ok = false;
            }
            if(ok) ans = k - '0';
        }
        if(ans == -1) cout << "NA" << endl;
        else cout << ans << endl;
    }
    return 0;
}


