서로 다른 부분 수열의 개수

주어진 문자열의 서로 다른 부분 수열의 개수를 빈 문자열까지 포함해 구한다. 테스트는 10,000개까지 주어진다.

보통6동적 계획법문자열수학아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

문자열 S=S1S2SNS = S_1S_2\cdots S_N이 있다. 0kN0 \le k \le N이고 1i1<i2<<ikN1 \le i_1 < i_2 < \cdots < i_k \le N일 때 Si1Si2SikS_{i_1}S_{i_2}\cdots S_{i_k}로 만들 수 있는 모든 문자열을 SS의 부분 수열이라고 한다. 길이가 0인 빈 문자열도 SS의 부분 수열이다. 예를 들어 문자열 ioi의 서로 다른 부분 수열은 빈 문자열, i, o, ii, io, oi, ioi로 모두 7개다.

문자열 SS가 주어질 때, SS의 서로 다른 부분 수열의 개수를 구하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT (1T100001 \le T \le 10\,000)가 주어진다. 둘째 줄부터 TT개의 줄에 걸쳐 한 줄에 하나씩 문자열 SS가 주어진다. SS는 영어 알파벳 대문자, 소문자와 숫자(0부터 9까지)로만 이루어져 있고, 길이는 1 이상 1,000 이하이다. 대문자와 소문자는 서로 다른 문자로 취급한다.

출력

각 테스트 케이스마다 주어진 문자열 SS의 서로 다른 부분 수열의 개수를 한 줄에 하나씩 출력한다. 빈 문자열도 개수에 포함한다. 입력으로는 답이 항상 101810^{18} 이하인 문자열만 주어진다.