COCI '07 Contest 5 #6 Baza
View as PDFThe longest common prefix of two words is the longest word that both words start with. For example,
the longest common prefix of the words identity and idealistic is the word ide.
A database contains  words.
The algorithm to search for a query word  in the database is primitive. It compares the word 
 one
by one with each word in the database. Two words are compared letter by letter until a letter in which
they differ is found or until the end of one of the words is reached (it is then established either that the
words are equal or that one is longer than the other). When the algorithm finds the word 
 in the
database, it terminates.
Analysing the algorithm shows that the number of steps needed to find a word  is equal to the
number of words 
 is compared to, plus the sum of the lengths of the longest common prefixes of 
and each of the words it was compared to.
Write a program that calculates the number of steps the algorithm uses to find each of the  query
words.
Input Specification
The first line contains an integer  
, the number of words in the database.
Each of the following  lines contains a single word from the database. The words are given in the
order the algorithm compares them to a query word. All words in the database will be distinct.
The following line contains an integer  
, the number of words searched for.
Each of the following  lines contains a single query word.
All words in the input will be strings of less than  lowercase letters of the English alphabet.
Output Specification
Output one integer per line for each query word, the number of steps the algorithm uses when searching for the word.
Sample Input 1
5
hobotnica
robot
hobi
hobit
robi
4
robi
hobi
hobit
rakija
Sample Output 1
12
10
16
7
Sample Input 2
8
majmunica
majmun
majka
malina
malinska
malo
maleni
malesnica
3
krampus
malnar
majmun
Sample Output 2
8
29
14
In the second example, the number of steps to search for the word krampus is  because the
algorithm only needs to compare its first letter to each word in the database.
When searching for the word malnar, we need three steps for each of the first three words, and four
steps for each of the remaining five words, for a total of  steps.
To find the word majmun we use a total of  steps. For the first word in the database, we have six
successful comparisons and one step in which we determine that the word 
majmunica is longer than
the query word. For the second word, we also have six successful comparisons and a final step in which
it is established that the words are equal. After finding the word, the algorithm terminates with great
joy.
Comments