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.util.*;
public class Main
{
	public static void main(String[] args) 
	{
		Scanner in=new Scanner(System.in);
		while(in.hasNext())
		{
			char ch[]=in.next().toCharArray();
			int a=0;
			int b=0;
			int c=0;
			int I=0;
			while(ch[I]!='+')
			{
				++a;
				++I;
			}
			++I;
			while(ch[I]!='=')
			{
				++b;
				++I;
			}
			++I;
			while(I!=ch.length)
			{
				++c;
				++I;
			}

			char A[]=new char[a];
			char B[]=new char[b];
			char C[]=new char[c];
			char x[]=new char[a];
			char y[]=new char[b];
			char z[]=new char[c];
			for(int i=0;i<a;i++)
				A[i]=ch[i];
			for(int i=0;i<b;i++)
				B[i]=ch[i+a+1];
			for(int i=0;i<c;i++)
				C[i]=ch[i+a+b+2];
			for(int i=0;i<a;i++)
				x[i]=A[a-i-1];
			for(int i=0;i<b;i++)
				y[i]=B[b-i-1];
			for(int i=0;i<c;i++)
				z[i]=C[c-i-1];
			
			int ans[]=new int[c];
			int X=-1;
			boolean judge=false;
			for(int i=0;i<10;i++)
			{
				int index1=0;
				int index2=0;
				int index3=0;
				boolean digit=false;
				judge=false;
				int aa=0;
				int bb=0;
				for(;;)
				{
					if(index1<a)
					{
						if(x[index1]!='X')
							aa=(int)(x[index1]-'0');
						else
							aa=i;
					}
					else
						aa=0;

					if(index2<b)
					{
						if(y[index2]!='X')
							bb=(int)(y[index2]-'0');
						else
							bb=i;
					}
					else
						bb=0;
					int e=aa+bb;
					if(digit)
					{
						e++;
						digit=false;
					}
					if(e>=10)
						digit=true;
					ans[index3]=e%10;
					++index1;
					++index2;
					++index3;
					if(index3==c)
						break;
				}
				for(int j=0;j<c;j++)
				{
					if(z[j]!='X'&&ans[j]==Integer.valueOf(z[j]-'0'))
						judge=true;
					else if(z[j]=='X'&&ans[j]==i)
						judge=true;
					else
					{
						judge=false;
						break;
					}
				}
				
				if(judge)
				{
					X=i;
					break;
				}
			}
			System.out.println(judge ? X:"NA");
		}
	}

	static public void debug(Object... o)
	{
		System.out.println(Arrays.deepToString(o));
	}
}