만드는 중입니다

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

회문 문자열

시간 제한2초메모리 제한2048 MB

요약
문자열 S와 질의 문자열 t가 주어질 때, t를 앞에 붙인 S[l..r]이 회문이 되는 (l, r) 쌍의 개수를 구합니다.
난이도

어려움10점 중 8점

유형
문자열 매칭, 문자열
정답자
아직 제출이 없습니다

문제

문자열 S=S1S2…S∣S∣S = S_1 S_2 \ldots S_{|S|}와 qq개의 질의가 주어진다. 각 질의에서는 문자열 t=t1t2…t∣t∣t = t_1 t_2 \ldots t_{|t|}가 주어지며, 1≤ℓ≤r≤∣S∣1 \le \ell \le r \le |S|를 만족하는 쌍 (ℓ,r)(\ell, r) 중에서 t1t2…t∣t∣SℓSℓ+1…Srt_1 t_2 \ldots t_{|t|} S_{\ell} S_{\ell + 1} \ldots S_r이 회문이 되는 쌍의 개수를 구한다. 여기서 회문이란 t1t2…t∣t∣SℓSℓ+1…Sr=SrSr−1…Sℓt∣t∣t∣t∣−1…t1t_1 t_2 \ldots t_{|t|} S_{\ell} S_{\ell + 1} \ldots S_r = S_r S_{r - 1} \ldots S_{\ell} t_{|t|} t_{|t| - 1} \ldots t_1이 성립하는 경우를 말한다.

입력

첫째 줄에 문자열 SS의 길이 nn과 질의의 개수 qq가 주어진다 (1≤n≤1061 \le n \le 10^6, 1≤q≤1051 \le q \le 10^5). 둘째 줄에는 문자열 SS가 주어진다. 이어지는 qq개의 줄에는 각각 질의 문자열 tt가 하나씩 주어진다. 모든 문자열은 소문자 영문자로만 이루어지며, ∑∣t∣≤106\sum |t| \le 10^6이다.

출력

각 질의에 대해 조건을 만족하는 쌍의 개수를 한 줄에 하나의 정수로 출력한다.

힌트

  • 첫 번째 질의에서 쌍은 (2,3)(2, 3), (3,3)(3, 3), (7,8)(7, 8), (8,8)(8, 8) 네 개이며, 결합 문자열은 차례로 pcp, pp, pmp, pp이다.
  • 두 번째 질의에서 쌍은 (1,2)(1, 2), (2,2)(2, 2), (2,5)(2, 5), (3,4)(3, 4), (4,4)(4, 4), (4,5)(4, 5), (5,5)(5, 5) 일곱 개이다.
  • 세 번째 질의에서 쌍은 (1,3)(1, 3), (2,3)(2, 3), (3,3)(3, 3), (8,8)(8, 8) 네 개이다.

예제1

  1. 예제 1

    입력
    8 3
    icpccamp
    p
    c
    pc
    
    예상 출력
    4
    7
    4