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

def judge_x( str = "" )
  str.chop!
  part_nums = []
  parts = str.split( "=" )

  left_base = part_bundle( parts[0] )
  right_base = part_bundle( parts[1] )

  if !left_base or !right_base
    puts "NA"
    return
  end 

  left  = left_base["value"] - right_base["value"]
  right = right_base["X"]    - left_base["X"]

  if left % right == 0 and left / right < 10
    puts left / right
  else
    puts "NA"
  end 
end

def part_bundle( part )
  xvalue, value = 0, 0
  nums = part.split( "+" )
  nums.each{ |num|
    return nil if num[0] == "X" 
    xvalue += x_value( num )
    value += reject_x_value( num )
  }
  { "value" => value, "X" => xvalue }
end

def x_index( num )
  x_index = []
  num.chars.each_with_index{ |char, i|
    if char == "X" 
      x_index << i
    end 
  }
  x_index
end

def x_value( num )
  length = num.length
  x_value = 0 
  x_index( num ).each{ |index|
    x_value += 10 ** ( length - index - 1 ) 
  }
  x_value
end

def x_value( num )
  length = num.length
  x_value = 0 
  x_index( num ).each{ |index|
    x_value += 10 ** ( length - index - 1 ) 
  }
  x_value
end

def reject_x_value( num_str )
  num_str.gsub( "X", "0" ).to_i
end

judge_x( gets )