만드는 중입니다

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

Lyndon 부분 문자열

시간 제한3초메모리 제한256 MB

요약
각 쿼리 (i, j)에 대해 문자열 s_i s_j에서 가장 긴 린던 부분문자열의 길이를 구합니다.
난이도

어려움10점 중 9점

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

문제

문자열 ww가 자신의 모든 순환 회전(cyclic rotation)보다 사전 순으로 작으면 ww를 Lyndon 단어라고 한다.

문자열 ss의 가장 긴 Lyndon 부분 문자열은 ss의 부분 문자열 중 Lyndon 단어이면서 가장 긴 것이다.

Chiaki에게는 nn개의 문자열 s1,s2,…,sns_1, s_2, \dots, s_n이 있다. Chiaki는 질의도 여러 개 가지고 있다. 각 질의는 쌍 (i,j)(i, j)가 주어질 때 문자열 sisjs_i s_j의 가장 긴 Lyndon 부분 문자열의 길이를 구하는 것이다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 첫 줄에는 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스는 다음과 같다.

첫 줄에는 두 정수 nn과 mm (1≤n,m≤1051 \le n, m \le 10^5)이 주어진다. 각각 문자열의 개수와 질의의 개수이다.

이어지는 nn개의 줄에는 소문자 영어 알파벳으로 이루어진 비어 있지 않은 문자열 sis_i (1≤si≤1051 \le s_i \le 10^5)가 한 줄에 하나씩 주어진다.

이어지는 mm개의 줄에는 질의를 나타내는 두 정수 ii와 jj (1≤i,j≤n1 \le i, j \le n)가 주어진다.

한 테스트 케이스에서 모든 ∣s∣|s|의 합은 5×1055 \times 10^5을 넘지 않는다. 또한 모든 테스트 케이스에서 모든 ∣s∣|s|의 합은 5×1065 \times 10^6을 넘지 않는다.

모든 nn의 합과 모든 mm의 합은 각각 10610^6을 넘지 않는다.

출력

각 질의에 대해 답을 나타내는 정수를 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    1
    2 1
    aa
    bb
    1 2
    
    예상 출력
    4