알파벳 스티커

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

문제

어릴 때 알파벳 소문자가 적힌 스티커를 가지고 놀았다. 스티커에는 소문자 중 일부만 적혀 있고, 26글자가 모두 적혀 있지는 않아도 된다.

한 스티커의 글자는 한 줄로 나열되어 있고, 같은 글자는 항상 서로 붙어 있다. 그래서 스티커를 문자열로 나타낼 수 있다. aabcc, ccccab, mmaw는 올바른 스티커다. abacc, cccabc, mawm은 같은 글자가 떨어진 두 곳에 나타나므로 올바른 스티커가 아니다.

글자 몇 개가 지워진 스티커를 찾았다. 지워진 글자는 모두 같은 스티커에 아직 보이는 글자 중 하나다. 즉 지워진 글자마다 그것과 같은 글자가 스티커에 적어도 하나 남아 있다. 지워진 자리는 물음표 ?로 나타낸다. 물음표가 없거나 여러 개 있는 스티커 표현이 주어지면, 원래 스티커로 가능한 경우의 수를 세어라.

예를 들어 aa??bb의 원래 스티커는 aaaabb, aaabbb, aabbbb 중 하나다. aababb는 올바른 스티커가 아니라서 답이 될 수 없고, aaccbb는 주어진 표현에 c가 보이지 않아서 답이 될 수 없다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. (1T1001 \le T \le 100)

각 테스트 케이스는 한 줄로 이루어지며, 길이가 1 이상 10,000 이하인 문자열이 주어진다. 문자열의 각 문자는 알파벳 소문자 (a부터 z) 또는 물음표 (?)다. 물음표는 없을 수도 있고 여러 개일 수도 있다. 각 문자열에는 물음표가 아닌 글자가 적어도 하나 있고, 원래 스티커로 가능한 경우가 적어도 하나 존재한다.

출력

각 테스트 케이스마다 원래 스티커로 가능한 경우의 수를 1,000,000,007 (109+710^9 + 7)로 나눈 나머지를 한 줄에 출력한다.