JBC

시간 제한1초메모리 제한128 MB

문제

인생은 배울 수 있지만, 때로는 쉬운 문제가 어려운 문제들 사이에 아주 잘 숨어 있기도 하다. 그런 쉬운 문제를 찾아내는 순간 이미 절반은 푼 셈이고, 대회 우승에도 한 걸음 더 다가서게 된다. 하지만 조심하라. 이 문제는 결코 가장 쉬운 문제가 아니다!

도전할 준비가 되었는가?

어떤 가상의 진법 체계에서 사용할 숫자(digit)들의 순서가 주어진다. 주어진 수를 여러 진법으로 해석하여 10진수(밑이 10인 수)로 변환하는 것이 목표이다. 하나의 수는 밑(base)을 어떻게 잡느냐에 따라 여러 가지로 해석될 수 있으므로, 가능한 모든 밑에 대한 10진수 해석값의 합을 구해야 한다.

입력

입력은 여러 개의 데이터 집합으로 이루어지며, 데이터 집합들은 하나 이상의 빈 줄로 구분된다.

각 데이터 집합의 첫 줄에는 이 가상 진법에서 사용하는 숫자들의 순서가 정의되어 있다. 공백(코드 0x20)보다 큰 코드를 가지는 모든 출력 가능한 ASCII 문자를 숫자로 사용할 수 있으며, 이 문자들은 값이 커지는 순서로 나열된다(맨 앞 문자의 값이 0). 따라서 정의된 숫자의 개수가 이 진법에서 가능한 가장 큰 밑이 된다.

데이터 집합의 둘째 줄부터는 앞에서 정의한 숫자들로 표기된 수가 한 줄에 하나씩 주어진다. 각 수에 대해 가능한 모든 밑으로 해석했을 때의 10진수 값을 모두 더한 값을 구한다. 밑은 항상 2 이상이어야 하고, 그 수에 등장하는 가장 큰 숫자의 값보다 커야 한다.

예를 들어 숫자 순서가 0123456789로 정의되면 가능한 밑은 2부터 10까지이다. 그러나 수 6201은 등장하는 가장 큰 숫자가 6이므로 밑 7부터 10까지에서만 해석할 수 있다.

입력의 각 줄 양쪽 끝에 있는 공백 문자는 무시해야 한다.

출력

각 데이터 집합의 각 수에 대해, 가능한 모든 밑에 대한 10진수 해석값의 합을 한 줄에 하나씩 출력한다. 서로 다른 데이터 집합의 출력은 빈 줄 하나로 구분한다.