비장의 일격 (Large)

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

요약
같은 두 문자와 그 사이 문자열을 지우는 공격을 X를 제외하고 최대 K번 써서 남길 수 있는 문자열의 최소 길이를 구한다.
난이도

어려움10점 중 8점

유형
스택, 동적 계획법, 그리디, 문자열
정답자
아직 제출이 없습니다

문제

본 문제와 비장의 일격 (Small) 문제는 입력 제한만 다른 동일한 문제이다.

영도는 어느 문자열에서 서로 다른 위치에 있는 같은 두 문자에 대해 비장의 일격을 최대 KK번 날릴 수 있다. 비장의 일격을 맞으면 두 문자들과 두 문자 사이에 있는 문자열은 사라지며, 남은 문자열은 합쳐지게 된다. 단, 뾰족한 문자 X에는 비장의 일격을 날릴 수 없다. 길이가 NN인, 알파벳 대문자로만 이루어진 문자열 SS가 주어질 때 남아있을 수 있는 문자열의 최소 길이를 구하시오. 만약 문자열이 남아있지 않을 경우 00을 출력한다.

입력

첫 번째 줄에 문자열의 길이 NN과 영도가 비장의 일격을 날릴 수 있는 횟수 KK가 주어진다.

두 번째 줄에 문자열의 SS가 주어진다.

출력

첫 번째 줄에 남아있을 수 있는 문자열의 최소 길이를 출력한다.

제한

  • 1≤N≤1,000,0001 \le N \le 1\\,000\\,000
  • 1≤K≤1,000,0001 \le K \le 1\\,000\\,000
  • 입력으로 주어지는 모든 수는 정수이다.
  • 입력으로 주어지는 문자열 SS는 알파벳 대문자로만 이루어져 있다.

예제3

  1. 예제 1

    입력
    18 2
    PIMMALGORITHMPARTY
    
    예상 출력
    2
    
  2. 예제 2

    입력
    18 1
    PIMMALGORITHMPARTY
    
    예상 출력
    4
    
  3. 예제 3

    입력
    17 4
    XAXAXBXCXBXCXDXDX
    
    예상 출력
    6