영어 대문자로만 이루어진 문자열 이 주어진다.
영어 대문자로만 이루어진 문자열 에서 부분 문자열을 몇 개 고르려고 한다. 고른 부분 문자열은 각각 중 하나와 같아야 하며, 서로 같은 위치의 문자를 포함해서는 안 된다. 여기서 부분 문자열은 연속한 문자들로 이루어진 문자열이다. 고른 부분 문자열들이 바로 붙어 있는 것은 허용한다.
같은 문자열과 일치하는 부분 문자열을 여러 번 골라도 된다. 주어진 문자열 중 같은 것이 여러 개 있더라도, 같은 위치의 부분 문자열을 여러 번 고를 수는 없다.
이렇게 고를 수 있는 부분 문자열의 최대 개수를 라고 하자. 아무것도 고를 수 없다면 이다. 예를 들어, 주어진 문자열이 하나일 때 이다. 앞의 두 문자와 뒤의 두 문자를 각각 고를 수 있기 때문이다. 반면, 에 있는 두 개의 는 가운데 문자를 공유하므로 이다.
영어 대문자로만 이루어진 길이 의 모든 문자열 에 대한 의 합을 으로 나눈 나머지를 구하여라.
입력은 다음과 같은 형식으로 주어진다.
각 테스트 케이스마다 길이 의 모든 영어 대문자 문자열 에 대한 의 합을 으로 나눈 나머지를 한 줄에 출력한다. 테스트 케이스가 입력된 순서대로 출력한다.
첫 번째 테스트 케이스에서는 일 때만 이고, 나머지 개의 문자열에서는 이다.
첫째 줄에 테스트 케이스의 개수 가 주어진다. 각 테스트 케이스는 다음과 같은 형식으로 주어진다.
각 테스트 케이스의 첫째 줄에 두 정수 과 이 공백으로 구분되어 주어진다. 다음 개의 줄 중 번째 줄에 문자열 가 주어진다.
| 4 | 37 | 추가적인 제약이 없다. |
두 번째 테스트 케이스에서 는 에 있는 의 개수이다. 첫 번째 문자가 인 문자열과 두 번째 문자가 인 문자열이 각각 개이므로 합은 이다. 는 이므로 두 번 기여한다.
세 번째 테스트 케이스에서는 처음 두 문자 또는 마지막 두 문자가 이면 이고, 그렇지 않으면 이다. 이러한 문자열은 개이다. 에서도 서로 겹치지 않는 는 하나만 고를 수 있다.
네 번째 테스트 케이스에서는 문자열 가 두 번 주어져도 고를 수 있는 부분 문자열이 달라지지 않으므로 정답은 두 번째 테스트 케이스와 같다.
다섯 번째 테스트 케이스에서는 에 있는 와 를 모두 고를 수 있다. 각 위치에서 두 종류의 문자가 각각 번씩 등장하므로 합은 이다.