Počet bodov:
Popis:  12b
Program:  8b

S jeseňou okrem chladného počasia a padania listov prichádza aj nový školský rok a Adam musel opäť nastúpiť do školy. Keďže sa do školy vrátiť nechcel, vymýšlal všelijaké výhovorky, aby mohol zostať doma (napr. strčil teplomer do teplého čaju; presviedčal rodičov, že je stále august; schoval sa pod posteľ; …). Tie sa mu však neprepiekli a do školy išiel aj tak.

Ako tam sedel, už na druhej vyučovacej hodine, uvedomil si, že to napokon nie je až také zlé. Čo ale čert nechcel, cez veľkú prestávku si spolužiaci začali robiť srandu z jeho štíhlej stavby tela. Na lavici mu pristál papierik so slovami Madam Adam. Adama to trošku rozhodilo a spýtal sa učiteľky, či by sa dalo ísť domov. Učiteľka mysliac, že sa pýtal na záchod, ho s úsmevom na perách pustila.

Po príchode domov si ešte raz otvoril papierik s odkazom. Ako sa naň pozeral, uvedomil si zaujímavú vec – madamadam sa číta rovnako spredu aj zo zadu. Takáto vlastnosť sa Adamovi veľmi zapáčila a vymyslel si takých slov viac. Ba dokonca, vymyslel ku takýmto slovám zaujímavú úlohu.

Úloha

Adam vymyslel n stringov s k znakmi, ktoré sa čítajú rovnako spredu aj zo zadu. String obsahuje znaky a-z, A-Z a 0-9. Okrem toho, v každom stringu je každý unikátny znak maximálne dvakrát. Vašou úlohou je zistiť, koľkými rôznymi spôsobmi sa dajú vymazať znaky zo stringu, aby sa nečítal rovnako spredu aj zo zadu.

Formát vstupu

Na prvom riadku vstupu je číslo n, ktoré reprezentuje počet otázok. Potom nasleduje n riadkov a na každom z nich je string dĺžky k.

Formát výstupu

Na každý riadok vypíšte číslo, koľkými rôznymi spôsobmi vieme vymazať znaky v stringu, aby sa nedal prečítať rovnako spredu aj zo zadu. Keďže odpoveď môže byť veľmi veľká, vypisujte ju modulo \(10^9 + 7\).

Obmedzenia

\(4\) sady vstupov po \(2\) body. Platia v nich nasledovné obmedzenia:

Sada \(1\) \(2\) \(3\) \(4\)
\(1 \leq n \leq\) \(10\) \(100\) \(1\,000\) \(10\,000\)
\(1 \leq k \leq\) \(10\) \(25\) \(75\) \(125\)

Príklad

Input:

1
AbbA

Output:

6

Po vymazaní znakov zo stringu AbbA je týchto 6 možných stringov, ktoré sa nečítajú rovnako spredu aj zo zadu: Abb, Ab, Ab, bbA, bA, bA. Na prvý pohľad sa zdá, že stringy Ab a Ab sú rovnaké, lenže jeden string obsahuje znak b na prvom indexe a druhý obsahuje znak b na druhom indexe, čiže sú rôzne. Tak isto aj bA a bA.

Input:

2
DaL00LaD
bysAsyb

Output:

210
98

Zo stringu DaL00LaD sa dajú vymazať znaky 210 spôsobmi a zo stringu bysAsyb sa dajú vymazať znaky 98 spôsobmi, aby sa nečítali rovnako spredu aj zo zadu.

Odovzdávanie

Na odovzdávanie sa musíš prihlásiť

Otázky a diskusia

Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.