Олимпиадный тренинг

Задача . D. Поиск строк


Вам задан массив \(s\) содержащий \(n\) различных строк. Каждая строка состоит из \(m\) строчных букв латинского алфавита.

Вам необходимо ответить на \(q\) запросов. Каждый запрос содержит строку \(t\) длины \(m+1\). Посчитайте количество индексов \(i\), таких что, строку \(t\) можно получить из строки \(s_i\), если разрешено вставить одну букву в произвольную позицию.

Входные данные

Первая строка содержит два целых числа \(n\) и \(m\) (\(1 \le n \le 10^5\); \(1 \le m \le 10\)) — размер массива и длина строк.

Следующие \(n\) строк содержат строки \(s_i\). Все заданные строки различны.

Следующая строка содержит одно целое число \(q\) (\(1 \le q \le 10^5\)) — количество запросов.

Следующие \(q\) строк содержат строки запросов \(t\) длины \(m + 1\).

Выходные данные

Для каждого запроса выведите количество индексов \(i\), таких что, строку из запроса можно получить из строки \(s_i\), если разрешено вставить одну букву в произвольную позицию.

Примечание

Объяснение первого теста из условия:

  • строка a может быть превращена в aa вставкой одной буквы;
  • и строка a, и строка c может быть превращена в строку ca вставкой одной буквы;
  • ни a, ни c не может быть превращена в mm вставкой одной буквы;
  • c можно превратить в cf вставкой одной буквы.

Примеры
Входные данныеВыходные данные
1 2 1
a
c
4
aa
ca
mm
cf
1
2
0
1
2 6 3
dba
abd
cbb
ada
add
bdd
5
ccbb
abdd
adba
bada
dddd
1
3
2
1
0

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя