Задачі
Cutting
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}
Вхідні дані #1
abacaba 4 aba aca a b
Вихідні дані #1
3
Пояснення: Першою операцією вирізали підрядок "aca", отримали "abba". Другою операцією вирізали підрядок "b", отримали "aba". Третьою операцією видалили весь рядок "aba".