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

Віруси

Віруси

У деякій антивірусній компанії займаються дослідженням вірусів. Їм відомо про існування \textbf{m} типів вірусів. Кожен вірус задається рядком з рядкових букв латинського алфавіту. Вірусам різного типу відповідають різні рядки. Нещодавно розпочались дослідження об'єктів, які раніше не вивчались, --- \textit{повністю заражених рядків}. Рядок \textbf{s} називається \textit{повністю зараженим}, якщо для довільного його символа існує підрядок \textbf{s}, що містить цей символ і є вірусом. Ваша задача --- за заданими вірусами знайти кількість повністю заражених рядків довжини \textbf{n}. Так як це число може бути дуже великим, виведіть його по модулю \textbf{10^9+7}. \InputFile Перший рядок містить два цілих числа \textbf{n} та \textbf{m} (\textbf{1} ≤ \textbf{n} ≤ \textbf{400}; \textbf{1} ≤ \textbf{m} ≤ \textbf{20}). Далі у \textbf{m} рядках задано описи вірусів. У кожному з цих рядків задана послідовність рядкових букв латинського алфавіту. Довжина кожного віруса додатна і не перевищує \textbf{20} символів. \OutputFile Виведіть єдине ціле число --- залишок від ділення числа повністю заражених рядків на \textbf{10^9+7}.
Ліміт часу 2 секунди
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
5 2
aba
babc
Вихідні дані #1
2
Джерело Russian-Code-Cup-2011 Отборочный раунд