Prihlásenie Registrácia  

S - Slovnik

Časový limit: 4s, Pamäťový limit: 128MiB

Programovacie jazyky: Pascal, C, C++, Java, C++0x, Python 3

Počet bodov: 1

[ Pošli riešenie ] [ Tvoje riešenia ] [ Správne riešenia ] [ Vzorové riešenie ]

Barbora rieši krížovku a narazila na zdanlivo neriešiteľný problém: otázku z biológie. Aj keď je proti podvádzaniu, istú formu pomoci by prijala.
Vymyslela to nasledovne: Každé slovo rieši postupne od začiatku. Ak si s niečím nevie poradiť, odhadne kandidátov na ďalšie písmeno a opýta sa, koľko ktoré z nich vie vygenerovať slov.
Napríklad hľadá 4-písmenkové slovo a prvé dve má "pl", kandidátmi na 3. písmeno sú "o" (plod, plot, ...) a "u" (pluh, pluk, plus, ...)

Úloha

Pre daný slovník a vzorku zistite, koľko slov jej vyhovuje

Vstup

V prvom riadku súboru sa nachádza číslo D udávajúce počet slov.

Dalsich D riadkov je obsah slovnika.

Nasleduje riadok s cislom Q, pocet vzoriek.

Dalsich Q riadkov obsahuje vzorky.

1 ≤ D ≤ 550 000
1 ≤ Q ≤ 20 000
V slovníku sú len slová s dĺžkou 1 až 20, tvorené malými písmenami anglickej abecedy
Vzorka okrem písmen abecedy obsahuje aj blok (len na konci) tvorený znakom "*", ktorý je zastupiteľný ľubovoľným písmenom

Výstup

Výstupom programu je odpoveď na každú vzorku na samostatnom riadku.

Príklad

Vstup:

5
plot
pluh
plus
plod
pluk
4
pl*
plu*
plo*
pl**

Výstup:

0
3
2
5