알보세데 DNA (스몰)

S의 부분 수열 가운데 a^i b^j c^i d^j 형태 블록을 하나 이상 이어붙인 경우를 1e9+7로 나눈 나머지로 셉니다.

보통7동적 계획법문자열조합론아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

알보세데라는 외계 종족의 DNA는 a, b, c, d 네 종류의 뉴클레오타이드로 이루어진다. 개체마다 서열은 다르지만, 모든 알보세데의 DNA 서열은 다음 규칙을 전부 만족한다.

  • a, b, c, d가 각각 적어도 한 번씩 나온다.
  • 모든 a는 모든 b보다 앞에 오고, 모든 b는 모든 c보다 앞에 오며, 모든 c는 모든 d보다 앞에 온다.
  • a의 개수와 c의 개수가 같다.
  • b의 개수와 d의 개수가 같다.

예를 들어 abcdaabbbccddd는 올바른 알보세데 DNA 서열이고, acbd, abc, abbccd는 아니다.

알보세데-n은 알보세데에서 진화한 종족이다. 알보세데-n의 DNA 서열은 올바른 알보세데 DNA 서열 하나 이상을 순서대로 이어 붙인 것이다. 예를 들어 abcdaaabcccdaabbbccdddabcd는 올바른 알보세데-n DNA 서열이다. 올바른 알보세데-n DNA 서열이 반드시 올바른 알보세데 DNA 서열인 것은 아니다.

탐사에서 a, b, c, d로만 이루어진 서열 SS를 하나 가져왔다. SS의 부분 수열 중 올바른 알보세데-n DNA 서열인 것이 몇 개인지 세어라. 부분 수열은 SS에서 위치를 골라 원래 순서대로 이어 만든 것이고, 고른 위치 집합이 다르면 만들어진 문자열이 같더라도 서로 다른 부분 수열로 센다. 답이 매우 커질 수 있으므로 109+710^9 + 7로 나눈 나머지를 구하라.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 다음 TT개의 줄에는 각각 a, b, c, d로만 이루어진 문자열 SS가 주어진다.

제한

  • 1T201 \le T \le 20
  • 1S501 \le |S| \le 50

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 그 테스트 케이스의 답이다.