주기

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

문제

알파벳 Σ\Sigma 위에서 정의된 두 문자열 AABB에 대해, AABB 사이의 편집 거리AABB로 바꾸는 데 필요한 최소 편집 연산 횟수이다. 편집 연산은 다음 세 가지이다.

  • 교체(change): AA의 한 문자를 BB의 한 문자로 바꾼다.
  • 삭제(deletion): AA에서 한 문자를 지운다.
  • 삽입(insertion): BB의 한 문자를 AA에 끼워 넣는다.

예를 들어 아래 그림은 A=abcdefgA = abcdefgB=ahcefigB = ahcefig의 편집 거리가 33임을 보여 준다. bh로 바꾸는 교체, d를 지우는 삭제, i를 끼워 넣는 삽입, 이렇게 세 번의 연산이 필요하다.

편집 거리 예시

반복되는 문자열의 정확한 주기(exact period)는 다음과 같이 정의한다. 문자열 xxx=pkx = p^k (k1k \ge 1) 꼴로 쓸 수 있고 pp가 그러한 문자열 중 가장 짧을 때, ppxx의 정확한 주기라고 한다. 예를 들어 x=ababababx = abababab이면 x=(abababab)1=(abab)2=(ab)4x = (abababab)^1 = (abab)^2 = (ab)^4이므로 ababxx의 정확한 주기이다.

근사 주기(approximate period)도 비슷하게 정의한다. 두 문자열 xxyy가 주어졌을 때, xx를 비어 있지 않은 부분 문자열 p1,p2,,ptp_1, p_2, \dots, p_t로 나누어 x=p1p2ptx = p_1 \cdot p_2 \cdots p_t로 쓴다고 하자. yy와 모든 부분 문자열 pip_i 사이의 편집 거리가 정수 kk 이하이면, yyxxkk-근사 주기라고 부른다.

xxyy가 주어질 때, yyxxkk-근사 주기가 되는 최소의 kk를 구하여라. 예를 들어 x=abcdabcabbx = abcdabcabb이고 y=abcy = abc이면, xxx=p1p2p3=abcdabcabbx = p_1 \cdot p_2 \cdot p_3 = abcd \cdot abc \cdot abb로 나눌 수 있고, y=abcy = abcabcd, abc, abb 사이의 편집 거리는 각각 11, 00, 11이다. 이 중 가장 큰 값이 11이므로 yyxx11-근사 주기이고, 최소의 kk11이다.

입력

입력은 표준 입력으로 주어진다. 첫째 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스는 두 줄로 이루어지며, 첫째 줄에는 문자열 yy가, 둘째 줄에는 문자열 xx가 주어진다. yy의 길이는 1y501 \le |y| \le 50을, xx의 길이는 1x50001 \le |x| \le 5000을 만족하고, 두 문자열은 모두 알파벳 Σ\Sigma인 소문자 영어 문자로만 이루어져 있다.

출력

출력은 표준 출력으로 한다. 각 테스트 케이스마다 yyxxkk-근사 주기가 되는 최소 정수 kk를 한 줄에 하나씩 출력한다.