부분 수열이 아닌 최단 문자열

아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

이 문제에서 크기가 kk인 알파벳은 아래 리스트의 처음 kk개 글자를 말한다.

a, b, c, ..., z, A, B, C, ..., Z, 0, 1, ..., 9

각 테스트 케이스마다 kk가 주어지고, 크기가 kk인 알파벳만 고려한다.

문자열 t[1..m]t[1..m]이 문자열 s[1..n]s[1..n]의 부분 수열이려면 t[1]=s[i1]t[1] = s[i_1], t[2]=s[i2]t[2] = s[i_2], ..., t[m]=s[im]t[m] = s[i_m]을 만족하는 인덱스 1i1<i2<<imn1 \le i_1 < i_2 < \cdots < i_m \le n이 존재해야 한다. 예를 들어 acb는 babcaab의 부분 수열이다.

문자열 s[1..n]s[1..n]이 주어졌을 때, ss의 부분 수열이 아닌 문자열 t[1..m]t[1..m]mm이 가장 작은 것을 찾고, 그런 문자열이 몇 개인지 세는 프로그램을 작성하시오. tt는 크기가 kk인 알파벳의 글자로만 이루어진다.

입력

첫째 줄에 테스트 케이스의 개수 TT (1T1001 \le T \le 100)가 주어진다. 이어지는 각 줄에 알파벳의 크기 kk (1k621 \le k \le 62)와 문자열 s[1..n]s[1..n] (1n1061 \le n \le 10^6)이 공백으로 구분되어 주어진다. ss는 위 리스트의 글자로만 이루어져 있다.

출력

각 테스트 케이스마다 두 정수를 한 줄에 출력한다. 첫 번째 정수는 가장 작은 mm이고, 두 번째 정수는 그런 문자열 t[1..m]t[1..m]의 개수를 109+710^9 + 7로 나눈 나머지이다.