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 JAVA (judge verdict: Wrong Answer)

import java.math.BigInteger;
import java.util.Scanner;

public class Main {

	private static final String DIV_RGX = "(\\+|=)";

    public static void main(String[] args) {

    	Scanner sc = new Scanner(System.in).useDelimiter(System.getProperty("line.separator"));

    	String   s;
    	int      ans;
    	BigInteger[] num = new BigInteger[3];
    	while(sc.hasNext()){
    		s = sc.next();
    		ans = -1;
    		for(int i = head_check(s);i<10;i++){
    			num = chg(s,i);
    			if((num[0].add(num[1])).equals(num[2])){
    				ans = i;
    			}
    		}
    		if   (ans != -1){System.out.println(ans); }
    		else            {System.out.println("NA");}
    	}
	}

    private static int head_check(String s){
		String[] s_ar = s.split(DIV_RGX);
    	int ret = 0;
    	for(String s_:s_ar){
    		if(s_.charAt(0) == 'X'){
    			ret = 1;
    		}
    	}
    	return ret;
    }

    private static BigInteger[] chg(String s,int r){
    	BigInteger[] ret = new BigInteger[3];
    	s = s.replace('X',String.valueOf(r).charAt(0));
		String[] s_ar = s.split(DIV_RGX);
		for(int i=0;i<3;i++){
			ret[i] = new BigInteger(s_ar[i]);
		}
		return ret;
    }
}