eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Reduction

Reduction

Задано рядок \textbf{S} та список \textbf{M}, який складається з \textbf{N} слів, кожне з яких довжини \textbf{L}. За одну операцію можна вибрати деякий підрядок рядка \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} \textbf{1} ≤ \textbf{L} ≤ \textbf{|S|}
Ліміт часу 1 секунда
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
abacabada
4
aba
aca
ada
abb
Вихідні дані #1
3