시간 제한메모리 제한제출정답맞힌 사람정답 비율
4 초 1024 MB2000.000%

문제

Филипп очень любит задачечки на строчечки. Он уже решил все известные ему задачечки, но этого ему было мало. Поэтому Филипп решил придумать свою собственную задачечку.

Для этого он взял строку $t$ и набор из $n$ строк $s_1$, $s_2$, $s_3$, \ldots, $s_n$. У Филиппа есть $m$ запросов, в $i$-м из них Филипп хочет взять подстроку строки $t$ с $l_i$-го по $r_i$-й символ, и посчитать число её подстрок, которые совпадают с какой-то строкой из набора. Более формально, Филипп хочет посчитать число пар позиций $a$, $b$, таких что $l_i \le a \le b \le r_i$, и подстрока строки $t$ с $a$-го по $b$-й символ совпадает с некоторой строкой $s_j$ из набора.

Подстрокой строки $t$ с $a$-го по $b$-й символ называется строка, полученная из $t$ путём удаления $a - 1$ символа из начала и $|t| - b$ символами из конца, где $|t|$ обозначает длину строки $t$.

Филипп уже решил эту задачу, а сможете ли вы?

입력

В первой строке два целых положительных числа $n$ и $m$ ($1 \le n, m \le 500\,000$) --- число строк в наборе и количество запросов.

Во второй строке дана единственная строка $t$, состоящая из строчных букв английского алфавита ($1 \le |t| \le 5 \cdot 10^6$).

В следующих $n$ строках описываются строки из набора. В $i$-й из них дана единственная строка $s_i$, состоящая из строчных букв английского алфавита. Обозначим за $S$ суммарную длину всех строк из набора. Гарантируется, что $S \le 10^6$, а так же что все строки $s_i$ различны.

В следующих строках вводятся запросы. В $i$-й из них даны два целых положительных числа $l_i$ и $r_i$ ($1 \le l_i \le r_i \le |t|$) --- левая и правая граница подстроки $t$ из $i$-го запроса.

출력

В единственной строке выведите $m$ целых чисел, $i$-е из них должно быть равно ответу на $i$-й запрос.

서브태스크

번호배점제한
110

$n \le 100$, $m \le 100$, $|t| \le 100$, $S \le 10\,000$

212

$n \le 100$, $m \le 500$, $|t| \le 5000$

37

$n \le 5000$, $|t| \le 5000$

48

$n \le 100$, $|t| \le 50\,000$

512

$|t| \le 100\,000$, $S \le 100\,000$

68

$|t| \le 250\,000$, $S \le 100\,000$

77

$|t| \le 500\,000$, $S \le 100\,000$

87

$|t| \le 750\,000$, $S \le 100\,000$

929

예제 입력 1

3 5
abacaba
aba
a
ac
1 7
1 3
2 7
2 5
4 5

예제 출력 1

7 3 5 3 1

예제 입력 2

4 4
abcdca
ab
ca
bcd
openolympiad
1 5
2 2
2 6
1 6

예제 출력 2

2 0 2 3

노트

В первом примере в первом запросе требуется у всей строки посчитать число подстрок, которые входят в набор. Со строкой <<aba>> совпадают подстроки $[1, 3]$ и $[4, 6]$. Со строкой <<a>> совпадают подстроки $[1, 1]$, $[3, 3]$, $[5, 5]$, $[7, 7]$. Со строкой <<ac>> совпадает подстрока $[3, 4]$. Всего получается, что 7 подстрок строки <<abacaba>> совпадают со строками из набора.

Во втором запросе от исходной строки берется подстрока с 1 по 3 позицию, это строка <<aba>>. В неё строка <<aba>> входит 1 раз, строка <<a>> входит 2 раза и строка <<ac>> не входит ни одного раза как подстрока.

В третьем запросе от исходной строки берется подстрока с 2 по 7 позицию, это строка <<bacaba>>. В неё строка <<aba>> входит 1 раз, строка <<a>> входит 3 раза и строка <<ac>> входит 1 раз как подстрока.

채점 및 기타 정보

  • 예제는 채점하지 않는다.
  • 이 문제의 채점 우선 순위는 2이다.