Ограничение по времени: 2.000 секунд
Ограничение по памяти: 500.000 мегабайт
На дежурстве у Марии не всегда много работы, поэтому она развлекается задачками в свободное время. Мария выписывает две строки s и t и хочет посчитать количество способов выбрать непустую подстроку s, которую можно собрать из букв строки t. Подстрокой строки называется отрезок подряд идущих символов. Две подстроки считаются различными, если различаются позиции их начала или конца.
Помогите Марии посчитать количество способов и скоротать время.
В первой строке дана строка s (1 ⩽ |s| ⩽ 106). Во второй строке дана строка t (1 ⩽ |t| ⩽ 106). Строки состоят из строчных латинских букв.
Выведите одно число - искомое количество способов выбрать подстроку s.
input | output |
---|---|
aaa aa |
5 |
abacaba abc |
15 |
В первом тесте существуют следующие способы выбрать подстроку (выделена скобками):
[a]aa
a[a]a
aa[a]
[aa]a
a[aa]
Во втором тесте существуют следующие способы выбрать подстроку:
[a]bacaba
a[b]acaba
ab[a]caba
aba[c]aba
abac[a]ba
abaca[b]a
abacab[a]
[ab]acaba
a[ba]caba
ab[ac]aba
aba[ca]ba
abac[ab]a
abaca[ba]
a[bac]aba
aba[cab]a