만드는 중입니다

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

K-굿니스 문자열

면접 대비

메모리 제한1024 MB

요약
문자열에서 정확히 K개의 대칭 위치 쌍이 서로 다르도록 만들기 위해 필요한 최소 문자 변경 횟수를 구한다.
난이도

쉬움10점 중 3점

유형
문자열, 그리디, 구현, 수학
정답자
아직 제출이 없습니다

문제

Charles는 문자열의 굿니스 점수를 1≤i≤N/21 \le i \le N/2인 모든 ii 중 Si≠SN−i+1S_i \ne S_{N-i+1}인 ii의 개수로 정의한다(1-indexed). 예를 들어 문자열 CABABC는 S2≠S5S_2 \ne S_5이고 S3≠S4S_3 \ne S_4이므로 굿니스 점수가 2이다.

Charles는 Ada에게 대문자로만 이루어진 길이 NN의 문자열 SS를 주고, 굿니스 점수가 KK인 문자열로 바꾸라고 했다. 한 번의 연산으로 Ada는 문자열의 임의의 문자를 임의의 대문자로 바꿀 수 있다. 주어진 문자열을 굿니스 점수가 KK인 문자열로 바꾸는 데 필요한 최소 연산 횟수를 구하시오.

입력

입력의 첫 줄에는 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 줄에는 두 정수 NN과 KK가 주어진다. 둘째 줄에는 대문자로만 이루어진 길이 NN의 문자열 SS가 주어진다.

출력

각 테스트 케이스마다 Case #x: y 형식의 한 줄을 출력한다. 여기서 xx는 테스트 케이스 번호(1부터 시작)이고, yy는 주어진 문자열 SS를 굿니스 점수가 KK인 문자열로 바꾸는 데 필요한 최소 연산 횟수이다.

제한

  • 1≤T≤1001 \le T \le 100.
  • 0≤K≤N/20 \le K \le N/2.

힌트

예제 1에서는 주어진 문자열의 굿니스 점수가 이미 1이다. 따라서 필요한 최소 연산 횟수는 0이다.

예제 2에서는 굿니스 점수를 2로 만들기 위해 인덱스 1의 문자를 B로 바꾸는 방법이 있다. 따라서 필요한 최소 연산 횟수는 1이다.

예제1

  1. 예제 1

    입력
    2
    5 1
    ABCAA
    4 2
    ABAA
    
    예상 출력
    Case #1: 0
    Case #2: 1