#include <bits/stdc++.h>
using namespace std;
int N, K;
long long int memo[510][510];
long long int pre[510][510];
int in[1100];
int bin[1100];
string s;
long long int inf = 1.1e18;
int main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	
	cin >> N >> K;
	cin >> s;
	
	int a = 1;
	int b = 1;
	
	for(int i = 0; i < N * 2; i++){
		if(s[i] == 'A'){
			in[i] = a;
			bin[a] = b;
			a++;
		}
		else{
			in[i] = b;
			b++;
		}
	}
	
	
	for(int i = 1; i <= N; i++){
		pre[i][i - 1] = 0;
		
		for(int j = i; j <= N; j++){
			pre[i][j] = pre[i][j - 1] + max(0,bin[j] - j + 1);
		}
	}
	
	for(int i = 0; i <= N; i++){
		for(int j = 0; j <= K; j++){
			memo[i][j] = inf;
		}
	}
	
	for(int i = 0; i <= K; i++){
		memo[0][i] = 0;
	}
	
	for(int i = 1; i <= N; i++){
		for(int j = 1; j <= K; j++){
			for(int k = i; k >= 1; k--){
				memo[i][j] = min(memo[i][j], memo[k - 1][j - 1] + pre[k][i]);
			}
		}
	}
	
	for(int i = 1; i <= N; i++){
		
	}
	
	printf("%lld",memo[N][K]);
} 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |