계산식 복원

아직 제출이 없습니다시간 제한8초메모리 제한512 MB

문제

동물 학교는 동물 아이가 다니는 초등학교다. 여러분은 이 학교에 다니는 여우다.

어느 날 토끼 선생님 하나코가 "계산식 복원"이라는 문제를 냈다. 계산식 복원 문제는 다음과 같다.

  • 양의 정수 AA, BB, CC가 주어진다.
  • 세 수에서 몇몇 자리의 숫자가 지워져 있다.
  • 빈자리마다 숫자를 하나씩 채워 A+B=CA + B = C가 성립하게 만든다.
  • 각 수의 첫 자리는 0이면 안 된다. 한 자리 수도 마찬가지다.

여러분은 수학에 밝아서 이 문제를 곧바로 풀었다. 그래서 더 어려운 문제를 떠올렸다. 주어진 계산식 복원 문제에서 가능한 채우기 방법이 몇 가지인지 세는 것이다. 이 문제까지 풀면 좋은 성적을 받는다.

새 과제를 시작하고 얼마 지나지 않아, 손으로 하나씩 세기에는 방법이 너무 많을 수도 있다는 것을 알아차렸다. 학교에서 프로그래밍을 가장 잘하기도 하니, 가능한 채우기 방법의 수를 세는 프로그램을 작성하기로 한다.

입력

입력은 여러 데이터 집합으로 이루어진다. 데이터 집합의 개수는 100개 미만이다. 각 데이터 집합의 형식은 다음과 같다.

A
B
C

각 데이터 집합은 문자열 AA, BB, CC 세 개로 이루어지고, AABB의 합이 CC가 되어야 한다는 뜻이다. 각 문자열은 숫자(0-9)와 물음표(?)로만 이루어진다. 물음표는 지워진 자리를 뜻한다. 각 문자열의 첫 문자는 0이 아니고, 각 데이터 집합에는 물음표가 적어도 하나 있다.

각 문자열의 길이는 1 이상 50 이하이고, 세 문자열의 길이는 서로 같다.

입력의 끝은 0 하나만 있는 줄로 표시한다.

출력

각 데이터 집합마다 가능한 채우기 방법의 수를 1,000,000,007로 나눈 나머지를 한 줄에 하나씩 출력한다. 하나코 선생님이 덤벙대는 토끼라서 답이 하나도 없는 데이터 집합이 섞여 있을 수 있다.

힌트

예제의 첫 데이터 집합의 답은 2이고, 두 방법은 다음과 같다.

  • 384 + 122 = 506
  • 394 + 122 = 516