#include "bits/stdc++.h"
#include<unordered_map>
#include<unordered_set>
#pragma warning(disable:4996)
using namespace std;
using ld = long double;
template<class T>
using Table = vector<vector<T>>;
const ld eps=1e-9;

//// < "D:\D_Download\Visual Studio 2015\Projects\programing_contest_c++\Debug\a.txt"

string st;
int ait;
vector<int>getnum() {
	vector<int>nums;
	while (ait != st.size()&&st[ait] != '+' && st[ait] != '=') {
		if (st[ait] == 'X') {
			nums.emplace_back(-1);
		}
		else {
			nums.emplace_back(st[ait] - '0');
		}
		ait++;
	}
	return nums;
}
int main() {
	while (getline(cin, st)) {
		vector<vector<int>>nums(3);
		{
			ait = 0;
			nums[0] = getnum();
			ait++;
			nums[1] = getnum();
			ait++;
			nums[2] = getnum();
		}
		bool zero_ok = true;
		for (int i = 0; i < 3; ++i) {
			if (nums[i][0] == -1)zero_ok = false;
		}

		
		size_t max_size = max(nums[0].size(), max(nums[1].size() ,nums[2].size()))+1;
		for (int i = 0; i < 3; ++i) {
			int rest = max_size - nums[i].size();
			for (int j = 0; j < rest; ++j) {
				nums[i].insert(nums[i].begin(),0);
			}
		}

		int ans = -1;
		for (int x = 0; x < 10; ++x) {
			if (!x&&!zero_ok)continue;
			else {
				vector<vector<int>>anums(nums);
				for (auto& anum : anums) {
					for (auto& n : anum) {
						if (n == -1)n = x;
					}
				}
				vector<int>sum(max_size);
				for (int i = 0; i < sum.size(); ++i) {
					sum[i] = anums[0][i] + anums[1][i];
				}
				for (int i = sum.size()-1; i >0; --i) {
					int up = sum[i] / 10;
					sum[i] %= 10;
					sum[i - 1] += up;
				}
				if (sum == anums[2]) {
					ans = x;
					break;
				}
			}
		}
		if (ans == -1) {
			cout << "NA" << endl;
		}
		else {
			cout << ans << endl;
		}
	}
	return 0;
}