문자열이 u v z^R u^R y z 형태로 나뉘고 |u|≥t, |z|≥t를 만족하는 가장 큰 t를 구하며, 그런 분할이 없으면 -1을 출력한다.
어려움9문자열문자열 매칭이분 탐색해시맵아직 제출이 없습니다시간 제한2초메모리 제한512 MBRNA 가닥을 대문자 문자열로 적는다. 가닥이 접히면 뒤집힌 두 쌍의 구간이 서로 엇갈리는 구조가 나타나고, 이 구조를 의사매듭이라고 한다. 연결이 길수록 구조가 안정적이므로, 새로운 가닥을 분석할 때는 연결이 가장 긴 의사매듭을 찾는다.
문자열 w를 이어지는 여섯 부분으로 잘라
w=uvzRuRyz
로 쓸 수 있으면 w는 의사매듭이다. uR과 zR은 각각 u와 z를 뒤집은 문자열이다. ∣u∣≥1이고 ∣z∣≥1이며, v와 y는 빈 문자열이어도 된다. 쌍 (u,uR)이 하나의 연결이고 쌍 (z,zR)이 다른 연결이다.
예를 들어 ICPCINAEROKCPCIFORKOREA는 u = ICPC, v = IN, zR = AEROK, uR = CPCI, y = FOR, z = KOREA로 잘리므로 의사매듭이다. AQQQQRRRRRQQQQQ는 어떻게 잘라도 이 형태가 나오지 않으므로 의사매듭이 아니다.

그림 1. 의사매듭인 문자열 (a)와 의사매듭이 아닌 문자열 (b)
ICPCAEROKCPCIKOREA는 v와 y가 모두 빈 문자열이지만 의사매듭이다. 비어 있으면 안 되는 부분은 u와 z뿐이다.

그림 2. v와 y가 빈 의사매듭
한 문자열이 여러 의사매듭 구조를 가지기도 한다. ICPCINAEROKCPCIAECIKOREA는 u = ICPC, v = IN, zR = AEROK, uR = CPCI, y = AECI, z = KOREA로 잘리고, u = IC, v = PCINAEROKCPCI, zR = AE, uR = CI, y = KOR, z = EA로도 잘린다. 앞쪽 구조의 연결이 더 기니 앞쪽 구조를 답으로 삼는다.

그림 3. 같은 문자열의 서로 다른 의사매듭 구조 두 가지
표준 입력으로 읽는다. 입력은 대문자로만 이루어진 문자열 하나이고, 중간에 공백이나 줄바꿈은 없다. 문자열의 길이는 1 이상 200,000 이하다.
표준 출력으로 쓴다. 입력 문자열 w를 w=uvzRuRyz로 자르면서 ∣u∣≥t, ∣z∣≥t, ∣v∣≥0, ∣y∣≥0을 만족시키는 가장 큰 정수 t를 한 줄에 출력한다. 그런 t가 없으면, 즉 w가 의사매듭이 아니면 -1을 출력한다.