가장 긴 부분 문자열
시간 제한5초메모리 제한1024 MB
문자열 S에서 각 k에 대해 정확히 k번 나타나는 부분문자열 중 겹치지 않게 가장 많이 고를 수 있는 것의 최대 길이를 구합니다.
문제
길이가 인 문자열 와 양의 정수 ()에 대해, 의 비어 있지 않은 부분 문자열 가 정확히 번 나타나면 를 -부분 문자열이라고 한다. 이 번의 출현은 서로 겹칠 수 있다. 예를 들어 "ababa"이면 에 대한 -부분 문자열은 다음과 같다.
- 에서 정확히 한 번 나타나는 1-부분 문자열은 네 개이다. "abab", "ababa", "bab", "baba"가 그것이다. "aba"는 두 번 나타나므로 1-부분 문자열이 아니다.
- 2-부분 문자열은 네 개이다. "ab", "aba", "b", "ba"가 그것이다. "ab"는 겹치지 않게 정확히 두 번 나타난다. "aba"의 두 출현은 문자 "a"에서 겹치며, 세 번 나타나지는 않는다.
- 3-부분 문자열은 "a" 하나뿐이다.
- 4-부분 문자열과 5-부분 문자열은 존재하지 않는다.
-부분 문자열 에 대해 는 에서 의 출현 중 서로 겹치지 않는 출현을 최대 몇 개 고를 수 있는지를 뜻한다. 예를 들어 "ab"는 겹치지 않게 두 번 고를 수 있으므로 이다. 2-부분 문자열 "aba"는 겹치지 않게 두 번 고를 수 없으므로 이다. 3-부분 문자열 "a"는 이다.
는 에 대해, -부분 문자열 중 가 가장 큰 것들 가운데 가장 긴 의 길이이다. "ababa"이면 , , , 이다.
입력
첫 줄에 길이 ()의 영어 소문자로 이루어진 문자열 가 주어진다.
출력
공백으로 구분한 개의 음이 아닌 정수를 한 줄에 출력한다. 순서는 이다. 어떤 에 대해 -부분 문자열이 없으면 는 0이다.