아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

사악한 바스커 가문의 신

시간 제한1초메모리 제한128 MB

요약
대소문자를 무시한 알파벳 k개의 구성이 같은 두 부분 문자열이 없는 가장 긴 접두사의 길이를 구한다.
난이도

어려움10점 중 8점

유형
문자열, 슬라이딩 윈도우, 해시맵, 이분 탐색
정답자
아직 제출이 없습니다

문제

그다지 유명하지 않은 작가 아서 코난 모일(Arthur Conan Moyle)은 자신의 책이 마땅히 받아야 한다고 믿는 만큼 인기를 끌지 못하는 이유를 마침내 알아냈습니다. 같거나 매우 비슷한 구절이 자꾸 반복되어 글이 지루해진다는 것이었습니다. 그는 책을 개선하는 가장 좋은 방법이 처음 반복이 나타나는 지점부터 뒤의 내용을 전부 버리는 것이라고 결론지었습니다. 그러면 책이 열린 결말 같은 흥미로운 느낌을 갖게 됩니다.

처음에는 완전히 똑같은 구절을 찾으려 했지만 실패했습니다. 반복되는 구절이 정확히 일치하는 경우는 드물기 때문입니다. 처음에는 소문자였던 글자가 두 번째에는 대문자가 되기도 하고 그 반대도 있으며, 문장 부호가 조금 다르거나 문장 속 단어의 순서가 살짝 바뀌기도 합니다. 이를 해결하기 위해 그는 중복을 인식하는 아래의 더 너그러운 기준을 고안했습니다. 이 기준에는 양의 정수 매개변수 kk가 있으며, kk를 바꾸면 얼마나 긴 반복 구절까지 중복으로 볼지 조절할 수 있습니다.

알파벳 문자는 a–z와 A–Z 글자입니다. 대소문자는 구분하지 않으므로 a와 A는 같은 글자로 봅니다.

두 문자열 S1S_1과 S2S_2가 글자의 순열을 무시하고 kk-동일하다는 것은 다음을 모두 만족한다는 뜻입니다.

  • S1S_1과 S2S_2는 모두 알파벳 문자로 시작하고 알파벳 문자로 끝난다.
  • S1S_1과 S2S_2는 모두 정확히 kk개의 알파벳 문자를 포함한다.
  • 모든 알파벳 문자 cc에 대해, S1S_1에 들어 있는 cc의 개수와 S2S_2에 들어 있는 cc의 개수가 같다.

바꿔 말하면, S1S_1과 S2S_2가 글자의 순열을 무시하고 kk-동일하다면 두 문자열이 사용하는 알파벳 문자는 (중복 개수까지 포함해) 완전히 같고, 다만 나열 순서만 다를 수 있습니다.

작가의 책이 하나 주어질 때, 글자의 순열을 무시하고 kk-동일한 두 부분 문자열을 포함하지 않는 가장 긴 앞부분을 구하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스는 두 줄로 주어집니다.

첫째 줄에는 정수 kk가 주어지며 1≤k≤501 \le k \le 50입니다.

둘째 줄에는 문자열 TT가 주어집니다. TT의 길이는 최대 100 000100\,000자입니다. TT에는 공백을 포함한 알파벳이 아닌 문자가 들어갈 수 있지만, 특별한 의미를 갖는 문자(즉 ASCII 코드가 3232보다 작은 문자)는 들어 있지 않습니다.

입력의 끝은 00 하나만 있는 줄로 표시됩니다.

출력

각 테스트 케이스마다 한 줄을 출력합니다. ii번째 테스트 케이스에 대해서는 정수 하나를 출력하는데, 그 값은 해당 테스트 케이스의 문자열 TT의 접두사 PP 중에서, 글자의 순열을 무시하고 kk-동일한 서로 다른(단, 겹치지 않을 필요는 없는) 두 부분 문자열 S1S_1과 S2S_2를 포함하지 않는 가장 긴 접두사 PP의 길이(알파벳이 아닌 문자까지 모두 포함)입니다.

예제3

  1. 예제 1

    입력
    4
    a'B'C'd'x'a'b'c'd
    4
    abcdabcd
    0
    
    예상 출력
    16
    4
    
  2. 예제 2

    입력
    2
    abc
    0
    
    예상 출력
    3
    
  3. 예제 3

    입력
    3
    abcbca
    0
    
    예상 출력
    5