부분 문자열 문제
시간 제한4초메모리 제한1024 MB
텍스트 t와 서로 다른 문자열 집합이 주어질 때, 각 질의 구간 t[l..r] 안에 집합의 문자열이 완전히 포함된 횟수를 셉니다.
문제
필립은 문자열 문제를 아주 좋아한다. 그는 이미 알고 있던 문제를 모두 풀었지만 그것으로는 부족해서 직접 문제를 만들기로 했다.
그는 문자열 와 개의 문자열 , , , , 으로 이루어진 집합을 골랐다. 필립에게는 개의 쿼리가 있다. 번째 쿼리에서 필립은 의 번째 문자부터 번째 문자까지의 부분 문자열을 잡고, 그 안에서 집합의 어떤 문자열과 일치하는 부분 문자열의 개수를 세고 싶어 한다. 정확히는 를 만족하고, 의 번째 문자부터 번째 문자까지의 부분 문자열이 집합의 어떤 와 같은 위치 쌍 의 개수를 구하는 것이다.
의 번째 문자부터 번째 문자까지의 부분 문자열은 의 앞에서 개 문자와 뒤에서 개 문자를 지워서 얻은 문자열이다. 여기서 는 의 길이다.
필립은 이 문제를 이미 풀었다. 당신은 풀 수 있는가?
입력
첫 줄에 양의 정수 과 이 주어진다 (). 각각 집합에 포함된 문자열의 개수와 쿼리의 개수이다.
둘째 줄에는 소문자 영어 알파벳으로 이루어진 문자열 가 주어진다 ().
다음 개 줄에는 각각 하나의 문자열 가 주어진다. 각 는 소문자 영어 알파벳으로만 이루어져 있다. 집합에 있는 모든 문자열 길이의 합을 라고 하면 이다. 또한 모든 는 서로 다르다.
다음 개 줄에는 쿼리가 주어진다. 번째 쿼리는 양의 정수 , 로 이루어지며 (), 에서 잘라낼 부분 문자열의 왼쪽 경계와 오른쪽 경계를 뜻한다.
출력
한 줄에 개의 정수를 출력한다. 번째 정수는 번째 쿼리의 답이다.
힌트
첫 번째 예제의 첫 번째 쿼리에서는 전체 문자열 안에서 집합에 속하는 부분 문자열을 센다. aba는 , 과 일치한다. a는 , , , 과 일치한다. ac는 와만 일치한다. 따라서 abacaba에서 집합의 문자열과 일치하는 부분 문자열은 모두 7개이다.
두 번째 쿼리에서 1번째부터 3번째 문자까지의 부분 문자열은 aba이다. 여기에는 aba가 1번, a가 2번 나타나고, ac는 전혀 나타나지 않는다.
세 번째 쿼리에서 2번째부터 7번째 문자까지의 부분 문자열은 bacaba이다. 여기에는 aba가 1번, a가 3번, ac가 1번 나타난다.