#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

string replace_x(string a, int b) {
  int pos = a.find("X");
  while (pos != string::npos) {
    a.replace(pos, 1, {static_cast<char>(b + '0')});
    pos = a.find("X", pos + 1);
  }
  return (a.length() > 1 && a[0] == '0') ? "NA" : a;
}

void fillzero(string &a, int n) {
  ostringstream ss;
  ss << setw(n) << setfill('0') << a;
  a = ss.str();
}

string add(string a, string b, int n) {
  string c(n, '0');
  int plus = 0;
  for (int i = n - 1; 0 <= i; --i) {
    int ai = a[i] - '0';
    int bi = b[i] - '0';
    int ci = ai + bi + plus;
    plus = ci / 10;
    c[i] = (ci % 10) + '0';
  }
  return c;
}

int main() {
  string str;
  while (cin >> str) {
    string a, b, c;
    stringstream ss(str);
    getline(ss, a, '+');
    getline(ss, b, '=');
    getline(ss, c);

    string ans = "NA";
    for (int i = 0; i < 10; ++i) {
      string a2 = replace_x(a, i);
      string b2 = replace_x(b, i);
      string c2 = replace_x(c, i);
      if (a2 == "NA" || b2 == "NA" || c2 == "NA")
        continue;

      vector<unsigned long> nvec = {a2.length(), b2.length(), c2.length()};
      int n = *max_element(nvec.begin(), nvec.end()) + 1;
      fillzero(a2, n);
      fillzero(b2, n);
      fillzero(c2, n);

      if (add(a2, b2, n) == c2)
        ans = {static_cast<char>(i + '0')};
    }
    cout << ans << endl;
  }
}
