만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

평범한 문자열 문제

시간 제한2초메모리 제한1024 MB

요약
각 문자열마다 길이 2 부분 문자열의 등장 횟수가 같은 a, b, c 문자열의 개수를 10^9 + 7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
조합론, 그래프, 수학
정답자
아직 제출이 없습니다

문제

두 문자열 ss와 tt는 길이가 2인 모든 문자열 uu에 대해 uu가 ss에 나타나는 횟수와 tt에 나타나는 횟수가 같으면 동치라고 한다. 예를 들어 aaaba, abaaa, baaab는 서로 동치이다. aa는 두 번, ab와 ba는 각각 한 번 나타나고, bb는 나타나지 않는다. 반면 abb와 bba는 동치가 아니다.

이 문제에서는 a, b, c로만 이루어진 문자열 QQ개가 주어진다. 각 문자열에 대해, 같은 문자로 이루어진 비어 있지 않은 문자열 중 그 문자열과 동치인 것의 개수를 구한다. 개수가 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 구한다.

입력

첫 줄에 소문제 번호 GG가 주어진다. 예제 테스트에서는 G=0G = 0이다.

둘째 줄에 정수 qq (1≤q≤1051 \le q \le 10^5)가 주어지고, 이어서 a, b, c로 이루어진 문자열이 한 줄에 하나씩 qq개 주어진다. 모든 문자열 길이의 합은 10610^6을 넘지 않는다.

출력

qq개의 정수를 출력한다. 각 문자열에 대해 동치인 문자열의 개수를 109+710^9 + 7로 나눈 나머지를 출력한다.

힌트

abaa와 동치인 문자열은 abaa, aaba, baab이다.

abca와 동치인 문자열은 abca, bcab, cabc이다.

ccbca와 동치인 문자열은 ccbca와 cbcca이다.

bacc와 동치인 문자열은 bacc뿐이다.

예제1

  1. 예제 1

    입력
    0
    4
    abaa
    abca
    ccbca
    bacc
    
    예상 출력
    3
    3
    2
    1