반복도
시간 제한2초메모리 제한512 MB
문자열의 서로 다른 모든 부분수열에 대해 등장 횟수의 제곱을 합한 값을 M으로 나눈 나머지를 구한다.
문제
길이가 인 문자열은 문자들의 어떤 부분집합을 지워서 얻는 개의 부분 수열(subsequence)을 가진다. 하지만 이 부분 수열들이 모두 서로 다른 것은 아니다. 예를 들어 문자열 "zoo"가 가지는 서로 다른 부분 수열은 6개뿐이다.
- "z", "oo", "zoo"는 각각 한 번씩만 나타나고,
- 빈 부분 수열도 한 번만 나타나며,
- "o"와 "zo"는 각각 두 번씩 나타난다.
문자열 에 서로 다른 부분 수열이 개 있고, 그중 번째 부분 수열이 번 나타난다고 하자. 이때 의 반복도(repetitivity) 를 로 정의한다. 예를 들어 "zoo"의 반복도는
이다.
입력
첫째 줄에 문자열 가 주어진다. 의 길이는 최대 이다. 둘째 줄에 정수 이 주어지며 을 만족한다. 는 ASCII 코드가 이상 이하인 문자만 포함한다(모두 출력 가능하고 공백이 아닌 문자이다).
출력
의 반복도를 으로 나눈 나머지를 첫째 줄에 출력한다.