D와 G로 이루어진 문자열에서 길이가 n 이상인 D 묶음이 k개 이상이 되도록 뒤집기 횟수의 최솟값을 구한다.
보통6동적 계획법그리디구현누적 합아직 제출이 없습니다시간 제한2초메모리 제한512 MB스리는 오리와 거위, 그리고 마법 지팡이로 게임을 한다. 먼저 스리가 자기 오리를 모두 한 줄로 세우면, 친구 스리니바스가 오리 사이 여러 곳에 거위를 끼워 넣는다. 그다음 스리가 지팡이로 새 일부를 뒤집는다.
지팡이를 한 번 쓰는 것은 다음과 같이 정의한다.
스리의 목표는 길이가 n 이상인 극대 오리 구간을 k개 이상 만드는 것이다. 극대 오리 구간은 연속한 오리의 나열 중 바로 왼쪽에도 바로 오른쪽에도 오리가 없는 것을 말한다. 예를 들어 DDGGGGDDDGDDDGD에는 길이가 각각 2, 3, 3, 1인 극대 오리 구간이 4개 있다.
게임이 끝났을 때 길이가 n 미만인 극대 오리 구간이 남아 있어도 된다. 길이가 n 이상인 극대 오리 구간이 k개 이상이기만 하면 된다.
스리가 목표를 이루려면 지팡이를 최소 몇 번 써야 하는지 구하여라.
첫째 줄에 두 정수 n과 k가 주어진다 (1≤n,k≤2000). n은 스리가 원하는 오리 구간의 최소 길이이고, k는 원하는 구간의 최소 개수이다.
둘째 줄에 대문자 D와 G로만 이루어진 문자열 s가 주어진다 (1≤∣s∣≤2000). s는 스리가 지팡이를 쓰기 전의 새 줄을 나타내고, D는 오리, G는 거위이다.
스리가 목표를 이루는 데 필요한 지팡이 사용 횟수의 최솟값을 한 줄에 출력한다. 목표를 이룰 수 없으면 -1을 출력한다.