단어 덧셈

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

문제

단어 덧셈은 905 + 125 = 1030 처럼 덧셈식에 나오는 각 숫자를 알파벳으로 바꿔 놓은 것이다.

예를 들어 9를 A, 0을 C, 5를 M, 1을 I, 2를 B, 3을 P로 바꾸면 위 식은 아래처럼 쓸 수 있다.

ACM + IBM = ICPC

905 + 125 = 1030 의 경우, 알파벳을 다시 숫자로 되돌리는 방법은 모두 4가지이다.

방법ABCIMP
방법 1920153
방법 2930154
방법 3960157
방법 4970158

단어 덧셈이 하나 주어졌을 때, 그 식을 성립시키는 숫자 배정이 몇 가지인지 세는 프로그램을 작성하시오. 단, 다음 조건을 모두 만족해야 한다.

  1. 덧셈의 각 항은 숫자 '0'부터 '9'까지로 이루어져 있으며, 모든 숫자가 알파벳 'A'부터 'Z'까지의 문자로 바뀌어 있다.
  2. 한 알파벳은 하나의 숫자만 나타내고, 서로 다른 알파벳은 서로 다른 숫자를 나타낸다. 즉, 한 숫자에 대응하는 알파벳은 많아야 하나이다.
  3. 0을 제외한 수는 0으로 시작할 수 없다. 즉, 00 이나 0123 과 같은 표기는 허용하지 않는다. (한 자리 수 0 은 허용한다.)

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 다음과 같이 주어진다.

  • 첫째 줄에 단어의 개수 N이 주어진다.
  • 이어서 N개의 단어가 주어진다. 각 단어는 알파벳 'A'부터 'Z'까지의 문자로만 이루어진다.

이 N개의 단어는 (단어 1) + (단어 2) + ... + (단어 N-1) = (단어 N) 이라는 방정식을 나타낸다. 즉 마지막 단어가 앞의 모든 단어의 합과 같다.

N은 2보다 크고 13보다 작다. 각 단어의 길이는 0보다 크고 9보다 작다. 한 테스트 케이스에 등장하는 서로 다른 알파벳의 개수는 0보다 크고 11보다 작다.

입력의 마지막 줄에는 0이 하나 주어진다. 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 그 단어 덧셈을 성립시키는 숫자 배정의 개수를 한 줄에 하나씩 출력한다.