만드는 중입니다

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

한국디지털미디어고등학교는 너무 길다

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

요약
문자열 S를 앞부분 A와 뒷부분 B로 나눌 때, min(|A|, |B|)에서 A와 B의 최장 공통 부분 문자열 길이를 뺀 값의 최댓값을 구합니다.
난이도

보통10점 중 6점

유형
문자열, 동적 계획법, 문자열 매칭
정답자
아직 제출이 없습니다

문제

디미고의 공식 명칭인 한국디지털미디어고등학교는 너무 길다. 그래서 학생회는 이 학교를 문과 계열 학교와 이과 계열 학교 둘로 나누어 이름을 줄이려 한다. 문과 계열 학교에는 디지털콘텐츠과와 이비지니스과가 속하고, 이과 계열 학교에는 웹프로그래밍과와 해킹방어과가 속한다. 학생회는 나눈 두 학교의 이름을 새로 지어야 한다.

학생회는 정체성을 지키기 위해 원래 학교 이름을 연속된 앞부분과 나머지 뒷부분으로 나누기로 했다. 예를 들어 KoreaDigitalMediaHighSchool은 앞부분 KoreaDigital과 뒷부분 MediaHighSchool로 나눌 수 있다. 앞부분이나 뒷부분은 빈 문자열이어도 된다.

두 계열은 서로 라이벌 의식을 가지고 있으므로, 학생회는 나눈 두 이름이 최대한 달랐으면 한다. 이를 객관적으로 판단하기 위해 불일치도라는 값을 사용한다. 학교 이름을 나눈 두 문자열을 각각 A, B라고 하면 불일치도는 min(∣A∣,∣B∣)−LCS(A,B)\mathrm{min}(|A|, |B|) - \mathrm{LCS}(A, B)이다. 문자열 S에 대해 ∣S∣|S|는 S의 길이이고, min(x,y)\mathrm{min}(x, y)는 x와 y 중 크지 않은 수이다.

LCS(A, B)는 대소문자를 구분하여 A와 B 모두의 부분 문자열이 되는 문자열 중 가장 긴 문자열의 길이이다. 예를 들어 ABCD와 ABDF의 공통 부분 문자열 중 가장 긴 것은 ABD이므로 LCS는 3이다. 부분 문자열은 원래 문자열에서 순서를 유지하면서 0개 이상의 문자를 제거해 만든 문자열이다. 예를 들어 ABC와 BD는 ABCD의 부분 문자열이지만 BDC, EAB, abc는 아니다.

한국디지털미디어고등학교를 잘 나눌 수 있도록 가능한 불일치도의 최댓값을 구하자.

입력

첫 번째 줄에 학교 이름을 나타내는 문자열 SS가 주어진다. SS는 알파벳 소문자와 대문자로만 이루어져 있다. (1≤∣S∣≤3 000)(1 \leq |S| \leq 3\,000)

출력

첫 번째 줄에 불일치도의 최댓값을 출력한다.

예제3

  1. 예제 1

    입력
    KoreaDigitalMediaHighSchool
    
    예상 출력
    9
    
  2. 예제 2

    입력
    seungchan
    
    예상 출력
    3
    
  3. 예제 3

    입력
    ababa
    
    예상 출력
    0