Encontrar palabras.


Submit solution

Points: 100 (partial)
Time limit: 1.0s
Memory limit: 128M

Author:
Problem type

El prefijo común más largo de dos palabras es la palabra más larga con la que ambas comienzan. Por ejemplo, el prefijo común más largo de las palabras "identidad" e "idealista" es "ide".

Una base de datos contiene N palabras. El algoritmo para buscar una palabra de consulta W en la base de datos es primitivo. Compara la palabra W una por una con cada palabra de la base de datos. Se comparan dos palabras letra por letra hasta que se encuentra una letra en la que difieren o hasta que se llega al final de una de ellas (en ese momento se determina si las palabras son iguales o si una es más larga que la otra). Cuando el algoritmo encuentra la palabra W en la base de datos, finaliza.

El análisis del algoritmo muestra que el número de pasos necesarios para encontrar una palabra W es igual al número de palabras con las que se compara W, más la suma de las longitudes de los prefijos comunes más largos de W y de cada una de las palabras con las que se comparó.

Escribe un programa que calcule el número de pasos que el algoritmo utiliza para encontrar cada una de las Q palabras de consulta.

Entrada

  • La primera línea contiene un entero N, que representa el número de palabras en la base de datos.
  • Cada una de las N líneas siguientes contiene una palabra de la base de datos. Las palabras se proporcionan en el orden en que el algoritmo las compara con una palabra de consulta. Todas las palabras de la base de datos serán distintas.
  • La siguiente línea contiene un entero Q, que representa el número de palabras que se buscan. Cada una de las Q líneas siguientes contiene una palabra de consulta. Todas las palabras de entrada serán cadenas de menos de 30 letras minúsculas del alfabeto inglés.

Salida

Imprime un entero por línea para cada palabra de consulta, que indica el número de pasos que el algoritmo utiliza al buscar la palabra.

Restricciones

  • 1 \leq N \leq 30 000
  • 1 \leq Q \leq 30 000

Ejemplo #1 de Entrada

5
hobotnica
robot
hobi
hobit
robi
4
robi
hobi
hobit
rakija

Ejemplo #1 de Salida

12
10
16
7

Ejemplo #2 de Entrada

8
majmunica
majmun
majka
malina
malinska
malo
maleni
malesnica
3
krampus
malnar
majmun

Ejemplo #2 de Salida

8
29
14

En el segundo ejemplo, el número de pasos para buscar la palabra "krampus" es 8 porque el algoritmo solo necesita comparar su primera letra con cada palabra de la base de datos. Al buscar la palabra "malnar", necesitamos tres pasos para cada una de las tres primeras palabras y cuatro pasos para cada una de las cinco restantes, para un total de 29 pasos.

Para encontrar la palabra "majmun" usamos un total de 14 pasos. Para la primera palabra de la base de datos, tenemos seis comparaciones exitosas y un paso en el que determinamos que la palabra "majmunica" es más larga que la palabra de consulta. Para la segunda palabra, también tenemos seis comparaciones exitosas y un paso final en el que se establece que las palabras son iguales. Tras encontrar la palabra, el algoritmo finaliza con gran satisfacción.


Comments

There are no comments at the moment.