Олимпиадный тренинг

Задача . B. Одержимость строкой


Задача

Темы: дп Строки *2000

Хамед недавно нашел строку t и неожиданно для себя крепко к ней привязался. Несколько дней он пытался найти все вхождения t в другие имеющиеся у него строки. Наконец, он устал и начал думать о следующей задаче.

Вам дана строка s. Сколько существует способов извлечь k ≥ 1 неперекрывающихся подстрок из неё, таких, что в каждой из них содержится t как подстрока? Более формально, требуется подсчитать количество способов выбора двух последовательностей, a1, a2, ..., ak и b1, b2, ..., bk, удовлетворяющих следующим требованиям:

  • k ≥ 1
  •   t является подстрокой строки saisai + 1... sbi (строка s индексируется с 1).

Так как количество способов может быть очень большим, выведите его по модулю 109 + 7.

Входные данные

Ввод состоит из двух строк s и t (1 ≤ |s|, |t| ≤ 105). Каждая строка состоит из маленьких букв латинского алфавита.

Выходные данные

Выведите ответ единственной строкой.


Примеры
Входные данныеВыходные данные
1 ababa
aba
5
2 welcometoroundtwohundredandeightytwo
d
274201
3 ddd
d
12

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w644
Комментарий учителя