Pattern Language
시간 제한5초메모리 제한512 MB
M개의 문자에 각각 정해진 한도 u_i 이하의 숫자를 넣어 전체 문자열이 회문이 되게 하는 경우의 수를 세는 문제다. 거울 대칭으로 짝지어진 두 위치는 같은 숫자를 받아야 한다.
문제
개의 서로 다른 알파벳 이 있다. 의 종류 문자로 이루어진 길이 의 문자열 이 주어진다. 이 문자열의 각 알파벳을 숫자로 바꾸어 회문이 되게 하려 한다. (회문이란 앞에서 읽어도 뒤에서 읽어도 같은 문자열을 말한다.) 같은 알파벳은 같은 숫자로 바꾸어야 한다. 또한 주어진 모든 알파벳 는 문자열 에 적어도 한 번은 나타난다.
알파벳 는 이상 이하의, leading zero를 포함하지 않는 정수로 바꿀 수 있다. 바꾼 뒤의 문자열이 회문이 되는 교체 방법이 몇 가지인지 mod 로 구하여라. 알파벳의 교체 방법이 다르면 얻어지는 문자열이 같아도 다른 것으로 센다.
입력
입력은 다음 형식으로 주어진다.
출력
교체 방법의 경우의 수를 로 나눈 나머지를 한 줄로 출력하라.
제한
- ∈
- 각 알파벳 는 에 적어도 한 번은 나타난다.
- 은 모두 서로 다르다