eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач

Cutting

Дана строка \textbf{S} и список \textbf{M}, состоящий из \textbf{N} слов. За одну операцию можно выбрать некоторую подстроку строки \textbf{S}, если такая встречается в качестве слова в списке \textbf{M}, и вырезать из строки \textbf{S}. После чего оставшиеся части строки \textbf{S}, если такие есть, склеиваются. Определить, за какое минимальное количество операций можно уничтожить всю строку \textbf{S}. Гарантируется, что это можно сделать. \InputFile В первой строке слово \textbf{S}. Во второй строке целое число \textbf{N} --- количество слов в списке. Далее \textbf{N} строк, в каждой из которых по одному слову из списка \textbf{M}. Все слова состоят только из строчных латинских букв. \OutputFile Одно число --- минимальное количество операций, необходимое для уничтожения строки \textbf{S}. \textbf{Ограничения} \textbf{1} ≤ |\textbf{S}| ≤ \textbf{100} \textbf{1} ≤ \textbf{N} ≤ \textbf{100} \textbf{1} ≤ |\textbf{M_i}| ≤ \textbf{100}
Лимит времени 5 секунд
Лимит использования памяти 256 MiB
Входные данные #1
abacaba
4
aba
aca
a
b
Выходные данные #1
3

Объяснение: Первой операцией вырезали подстроку "aca", получили "abba". Второй операцией вырезали подстроку "b", получили "aba". Третьей операцией удалили всю строку "aba".