10772. Утворення слова


Відправити розв'язок

Бали: 100
Time limit: 1.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Вам надано рядок довжиною \(n\) і словник, що містить \(k\) слів.

Скількома способами можна створити рядок, використовуючи слова?

Обмеження

  • \(1≤n≤5000\)
  • \(1≤k≤10^5\)
  • загальна довжина слів дорівнює не більше \(10^6\)

Формат вхідних даних

Перший рядок містить рядок, що містить \(n\) символів між a–z.

У другому рядку є ціле число \(k\): кількість слів у словнику.

Нарешті є \(k\) рядків, що описують слова. Кожне слово є унікальним і складається з букв a–z.

Формат вихідних даних

Виведіть кількість способів за модулем \(10^9 + 7\).

Пояснення

Можливі шляхи ab+ab+c і abab+c.

Приклад вхідних даних

ababc
4
ab
abab
c
cb

Приклад вихідних даних

2

Коментарі

Ще немає коментарів.