만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

a11y

시간 제한3.5초메모리 제한1024 MB

요약
문자열 A와 (x, k, y) 형태의 쿼리가 주어질 때, x로 시작하고 y로 끝나며 길이가 k+2인 A의 부분 문자열 개수를 쿼리마다 구합니다.
난이도

보통10점 중 5점

유형
문자열, 비트 연산, 해시맵
정답자
아직 제출이 없습니다

문제

당신은 a11y라는 단어를 들어본 적이 있는가? 이는 accessibility (접근성)을 줄인 축약어로, a와 y 사이에 11개의 문자가 있다는 뜻이다. 이와 비슷한 축약어로 k8s (Kubernetes), i18n (internationalization) 등이 있다.

길이 NN인 문자열 AA가 있다. 알파벳, 수, 알파벳으로 이루어진 축약어가 쿼리로 주어질 때, 이와 매칭되는 AA의 부분문자열이 몇 개 있는지 출력하여라. 개수를 셀 때는 같은 문자열이라도 AA에서의 위치가 다르면 다른 것으로 센다.

어떤 문자열의 부분문자열이란, 문자열의 양 끝에서 문자를 00개 이상 지워서 만들 수 있는 문자열을 뜻한다. 예를 들어, abc의 부분문자열은 a, b, c, ab, bc, abc로 66개가 있다.

입력

첫 번째 줄에 알파벳 소문자로만 이루어진 길이가 NN인 문자열 AA가 주어진다. (1≤N≤100 0001\le N\le 100\,000)

다음 줄에 쿼리의 수 QQ가 주어진다. (1≤Q≤100 0001\le Q\le 100\,000)

그다음 QQ개의 줄에 축약어가 문자, 수, 문자 형태로 공백 없이 주어진다. 이때 두 문자는 알파벳 소문자이며, 가운데 수는 11 이상 N−2N-2 이하이다.

출력

QQ개의 줄에 쿼리의 답을 차례로 출력한다.

예제2

  1. 예제 1

    입력
    accessibility
    4
    a11y
    c2s
    i1i
    i1y
    
    예상 출력
    1
    2
    2
    1
    
  2. 예제 2

    입력
    abababababa
    4
    a1a
    a2a
    a1b
    a2b
    
    예상 출력
    5
    0
    0
    4