Задачі
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
abacabada 4 aba aca ada abb
Вихідні дані #1
3