Codeforces Round 282 (Div. 1)
B
Obsessive String
Codeforces
2000
原题
← AC →
翻译中…

Hamed has recently found a string $*t*$ and suddenly became quite fond of it. He spent several days trying to find all occurrences of $*t*$ in other strings he had. Finally he became tired and started thinking about the following problem. Given a string $*s*$ how many ways are there to extract $*k* ≥ 1$ non-overlapping substrings from it such that each of them contains string $*t*$ as a substring? More formally, you need to calculate the number of ways to choose two sequences $*a*_{1}, *a*_{2}, ..., *a*_{*k*}$ and $*b*_{1}, *b*_{2}, ..., *b*_{*k*}$ satisfying the following requirements:

翻译中…
  • $*k* ≥ 1$
  • image
  • image
  • image
  • image $*t*$ is a substring of string $*s*_{*a*_{*i*}}*s*_{*a*_{*i*} + 1}... *s*_{*b*_{*i*}}$ (string $*s*$ is considered as $1$-indexed).
翻译中…

As the number of ways can be rather large print it modulo $10^{9} + 7$.

翻译中…

Input

翻译中…

Input consists of two lines containing strings $*s*$ and $*t*$ ($1 ≤ |*s*|, |*t*| ≤ 10^{5}$). Each string consists of lowercase Latin letters.

翻译中…

Output

翻译中…

Print the answer in a single line.

翻译中…

样例

Input #1
ababa
aba
Output #1
5
InputCopy OutputCopy
Input #2
welcometoroundtwohundredandeightytwo
d
Output #2
274201
InputCopy OutputCopy
Input #3
ddd
d
Output #3
12
InputCopy OutputCopy
题目信息
题号
494B
时间限制
2 s
内存限制
256 MB
标签
动态规划
字符串

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。