Problem:
覆面算

数式の一部を隠してしまって、隠した数字を探す問題を覆面算といいます。今回は、数式の中のある数字のいくつかを X で隠してしまった式を扱います。以下の数式を入力して、結果を出力するプログラムを作成してください。

数式

「数字列 + 数字列 = 数字列」の形で、1 行の単純な足し算式です。

「数字列」は、数字 0 から 9 と文字 X の並びです。

2 桁以上の「数字列」の左端の数字は 0 ではないものとします。

X は、数式全体の中で必ず 1 つ以上含まれます。

結果

覆面算の答えです。数式が成り立つ様な X の値で 0 ~ 9 のどれか 1 つです。2 つ以上の答えはないものとします。

答えがない場合、結果は“NA”としてください。

Input

複数のデータセットが与えられます。各データセットとして、X を 1 つ以上含む足し算式(空白を含まない 126 文字以内の文字列) が１行に与えられます。データセットの数は 150 を超えません。

Output

各データセットについて、覆面算の結果を１行に出力してください。数字 0 ~ 9 または NA を出力してください。

Sample Input

123+4X6=X79
12X+4X6=X79
XX22+89=X2XX

Output for the Sample Input

5
NA
1

Solution in C# (judge verdict: Accepted)

using System;
class _0110 {
    static int Parse(string s) {
        int res = 0, b = 1;
        for(int i = s.Length-1; i >= 0; i--) {
            res += (s[i] - '0') * b;
            b *= 10;
        }
        return res;
    }
    public static void Main() {
        string str;
        char c;

        while ((str = Console.ReadLine()) != null) {
            for (c = '0'; c <= '9'; c++) {
                string cExpr = str.Replace('X', c);
                string[] strs = cExpr.Split('+', '=');
                if (c == '0' && ((strs[0].Length > 1 && strs[0][0] == '0') || (strs[1].Length > 1 && strs[1][0] == '0') || (strs[2].Length > 1 && strs[2][0] == '0'))) continue;
                if (Parse(strs[0]) + Parse(strs[1]) == Parse(strs[2])) {
                    Console.WriteLine(c);
                    break;
                }
            }
            if (c == ('9' + 1)) Console.WriteLine("NA");
        }
    }
}