#include<bits/stdc++.h>
using namespace std;\
#define SZ(x) int(x.size())
#define all(x) x.begin(), x.end()
#define pb push_back
int get(string s) {
int bal = 0;
for(int i=0; i<SZ(s); i++) {
bal += s[i]=='A' ? 1 : -1;
if(bal<0) return 1e9;
}
vector<int> A, B;
for(int i=SZ(s)-1; i>=0; i--)
(s[i]=='A'?A:B).pb(i);
int ans=0;
while(!A.empty()) {
ans++;
int ct=0;
while(!A.empty() && A.back()<B.back()) {
ct++;
A.pop_back();
}
while(ct--) B.pop_back();
}
return ans;
}
int dis(string s, string t) {
vector<int> vs, vt;
for(int i=0; i<SZ(s); i++) {
if(s[i]=='A') vs.pb(i);
if(t[i]=='A') vt.pb(i);
}
int ans = 0;
for(int i=0; i<SZ(vs); i++)
ans += abs(vs[i]-vt[i]);
return ans;
}
int32_t main() {
cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0);
int n, k;
cin >> n >> k;
string s;
cin >> s;
assert(n<=10);
int ans = 1e9;
string t=s;
sort(all(t));
do {
if(get(t)<=k) ans = min(ans, dis(s, t));
} while(next_permutation(all(t)));
cout << ans << '\n';
return 0;
}
# | 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... |