복면산?!

세 문자열 A+B=C가 주어질 때 서로 다른 숫자를 각 글자에 대응시켜 덧셈이 성립하게 만들 수 있는지 판정한다. 각 단어 길이는 최대 18이다.

어려움9백트래킹수학조합론완전 탐색아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

복면산은 계산식의 각 숫자를 문자로 치환한 뒤, 각 문자가 어떤 숫자를 나타내는지 맞추는 수학 퍼즐이다.

대표적으로 SEND+MORE=MONEYSEND+MORE=MONEY가 있다.

  SEND
+ MORE
------
 MONEY

S=9S=9, E=5E=5, N=6N=6, D=7D=7, M=1M=1, O=0O=0, R=8R=8, Y=2Y=2로 두면 식이 성립한다.

  9567
+ 1085
------
 10652

세 단어로 이루어진 복면산 A+B=CA+B=C가 주어질 때, 식을 성립시키는 숫자 대응이 존재하는지 판정하시오.

같은 문자는 항상 같은 숫자에 대응되어야 하고, 서로 다른 문자는 서로 다른 숫자를 나타낸다. 수는 00으로 시작할 수 있다.

입력

세 단어 AA, BB, CC가 공백으로 구분되어 주어진다. 이는 첫 번째 단어에 두 번째 단어를 더한 결과가 세 번째 단어임을 의미한다.

각 단어는 공백 없이 알파벳 대문자로만 이루어져 있으며, 각 단어의 길이는 1818자를 넘지 않는다.

출력

계산식을 성립시키는 대응이 존재하면 한 줄에 YESYES를, 그렇지 않으면 한 줄에 NONO를 출력한다.

힌트

해답은 여러 개 존재할 수 있으며, 존재 여부만을 판단한다. 입력 SUNSUN FUNFUN SWIMSWIM에 대해서는 067+867=0934067+867=0934167+867=1034167+867=1034를 포함하여 4949개의 해답이 존재한다.