题库练习 Cipher
← 上一题 下一题 →

A8417 | Cipher

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

Sherlock Holmes found a mysterious correspondence of two VIPs and made up his mind to read it. But there is a problem! The correspondence turned out to be encrypted. The detective tried really hard to decipher the correspondence, but he couldn't understand anything.

At last, after some thought, he thought of something. Let's say there is a word $s$ , consisting of $|s|$ lowercase Latin letters. Then for one operation you can choose a certain position $p$ ( $1<=p<|s|$ ) and perform one of the following actions:

- either replace letter $s_{p}$ with the one that alphabetically follows it and replace letter $s_{p+1}$ with the one that alphabetically precedes it;
- or replace letter $s_{p}$ with the one that alphabetically precedes it and replace letter $s_{p+1}$ with the one that alphabetically follows it.

Let us note that letter "z" doesn't have a defined following letter and letter "a" doesn't have a defined preceding letter. That's why the corresponding changes are not acceptable. If the operation requires performing at least one unacceptable change, then such operation cannot be performed.

Two words coincide in their meaning iff one of them can be transformed into the other one as a result of zero or more operations.

Sherlock Holmes needs to learn to quickly determine the following for each word: how many words can exist that coincide in their meaning with the given word, but differs from the given word in at least one character? Count this number for him modulo $1000000007$ $(10^{9}+7)$ .

输入格式

The input data contains several tests. The first line contains the only integer $t$ ( $1<=t<=10^{4}$ ) — the number of tests.

Next $t$ lines contain the words, one per line. Each word consists of lowercase Latin letters and has length from $1$ to $100$ , inclusive. Lengths of words can differ.

输出格式

For each word you should print the number of different other words that coincide with it in their meaning — not from the words listed in the input data, but from all possible words. As the sought number can be very large, print its value modulo $1000000007$ $(10^{9}+7)$ .

输入输出样例

输入 #1
1
ab
输出 #1
1
输入 #2
1
aaaaaaaaaaa
输出 #2
0
输入 #3
2
ya
klmbfxzb
输出 #3
24
320092793
C++ 编辑器
输入
输出