K번째 문자열
시간 제한1초메모리 제한256 MB
서로 다른 n개 문자의 순열 t 중, 비어 있지 않은 부분 문자열을 사전순으로 정렬했을 때 k번째가 s인 순열의 개수를 1e9+7로 나눈 나머지로 구한다.
문제
Alice는 장의 카드를 가지고 있고, 각 카드에는 알파벳 소문자 처음 글자 중 하나가 적혀 있다. 예를 들어 이면 Alice는 "a", "b", "c"가 적힌 카드 세 장을 가지고 있다. Alice는 이 카드들을 한 번씩 사용해 문자열 를 만들었다. 그리고 의 모든 비어 있지 않은 부분 문자열을 사전순으로 정렬했더니, 정렬된 목록에서 번째 문자열이 였다. 가능한 는 몇 개인가?
예를 들어 이고 이면 정렬된 목록은 a, ab, b, c, ca, cab이고, 세 번째 문자열은 b이다. 이고 일 때 로 가능한 것은 cab과 bac 두 가지이다.
주어진 정보와 일치하는 의 개수를 로 나눈 나머지를 구한다. Alice가 실수했을 수도 있으며, 그 경우 가능한 의 개수는 0이다.
입력
첫째 줄에 공백으로 구분된 두 정수 과 가 주어진다. 다음 줄에 문자열 가 주어진다 (, ). 의 문자는 서로 다르며, 는 알파벳 소문자 처음 글자로 이루어져 있다.
출력
답을 한 줄에 출력한다.