공통 부분 문자열 쿼리

아직 제출이 없습니다시간 제한4초메모리 제한1024 MB

문제

알파벳 소문자로만 이루어진 NN개의 문자열 S_1,,S_NS\_1, \dots, S\_N이 주어진다. 아래의 쿼리를 처리하는 프로그램을 작성하시오.

  • i ji\ j : S_iS\_iS_jS\_j의 서로 다른 공통 부분 문자열의 개수를 구한다.

어떤 문자열의 부분 문자열은 그 문자열의 비어있지 않은 연속한 부분으로 정의한다.

두 문자열 AABB의 공통 부분 문자열은 AA의 부분 문자열이면서 BB의 부분 문자열인 문자열이다.

입력

첫째 줄에 문자열의 개수 NN이 주어진다. (1N200,0001 \leq N \leq 200\\,000)

이어지는 NN개의 줄에, 알파벳 소문자로 이루어진 문자열 S_1,,S_NS\_1, \dots, S\_N이 한 줄에 하나씩 주어진다. S_1,,S_NS\_1, \dots, S\_N의 길이의 합은 200,000200\\,000을 넘지 않음이 보장된다.

이어지는 줄에 쿼리의 개수 QQ가 주어진다. (1Q200,0001 \leq Q \leq 200\\,000)

이어지는 QQ개의 줄에 쿼리를 나타내는 두 정수 iijj가 주어진다. (1i,jN1 \leq i, j \leq N)

출력

QQ개의 쿼리에 대한 정답을 한 줄에 하나씩 순서대로 출력한다.