이 문제에서 크기가 k인 알파벳은 아래 리스트의 처음 k개 글자를 말한다.
a, b, c, ..., z, A, B, C, ..., Z, 0, 1, ..., 9
각 테스트 케이스마다 k가 주어지고, 크기가 k인 알파벳만 고려한다.
문자열 t[1..m]이 문자열 s[1..n]의 부분 수열이려면 t[1]=s[i1], t[2]=s[i2], ..., t[m]=s[im]을 만족하는 인덱스 1≤i1<i2<⋯<im≤n이 존재해야 한다. 예를 들어 acb는 babcaab의 부분 수열이다.
문자열 s[1..n]이 주어졌을 때, s의 부분 수열이 아닌 문자열 t[1..m] 중 m이 가장 작은 것을 찾고, 그런 문자열이 몇 개인지 세는 프로그램을 작성하시오. t는 크기가 k인 알파벳의 글자로만 이루어진다.
첫째 줄에 테스트 케이스의 개수 T (1≤T≤100)가 주어진다. 이어지는 각 줄에 알파벳의 크기 k (1≤k≤62)와 문자열 s[1..n] (1≤n≤106)이 공백으로 구분되어 주어진다. s는 위 리스트의 글자로만 이루어져 있다.
각 테스트 케이스마다 두 정수를 한 줄에 출력한다. 첫 번째 정수는 가장 작은 m이고, 두 번째 정수는 그런 문자열 t[1..m]의 개수를 109+7로 나눈 나머지이다.