게으른 철자 대회 (큰 입력)

목표 단어의 각 위치에서 이웃 글자로 만들 수 있는 서로 다른 단어 개수를 1,000,000,007로 나눈 나머지를 구합니다.

쉬움2조합론문자열수학면접 대비아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

철자 대회에 나온 참가자는 목표 단어 WW의 철자를 말한다. 참가자가 말한 단어 AA는 길이가 WW와 같고, 모든 ii에 대해 AAii번째 글자가 WWi1i-1번째, ii번째, i+1i+1번째 글자 가운데 하나와 같으면 정답으로 인정한다. WW00번째 글자는 없으므로 AA의 첫 글자는 WW의 첫 글자나 두 번째 글자와 같아야 한다. 마찬가지로 AA의 마지막 글자는 WW의 마지막 글자나 그 바로 앞 글자와 같아야 한다. 목표 단어 자신은 언제나 정답으로 인정한다.

대회를 준비하면서 목표 단어마다 서로 다른 정답 단어가 몇 개인지 세어야 한다. 이 수가 매우 커질 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어지는 TT개의 줄에 소문자 알파벳(a부터 z)으로만 이루어진 문자열이 한 줄에 하나씩 주어진다.

제한

  • 1T1001 \le T \le 100
  • 각 문자열의 길이는 11 이상 10001000 이하이다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx11부터 시작하는 테스트 케이스 번호이고, yy는 서로 다른 정답 단어의 개수를 109+710^9 + 7로 나눈 나머지이다.

설명

목표 단어가 ag이면 정답으로 인정하는 단어는 aa, ag, ga, gg로 네 개다. 목표 단어가 aa이면 정답은 aa 하나뿐이다.