#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
using ll = long long;
#define int ll
void fail() {
cout << -1 << "\n";
exit(0);
}
signed main() {
int n,k; cin >> n >> k;
string s; cin >> s;
map<char,int> f;
for(char c : s) f[c]++;
if(f['J']<k||f['O']<k||f['I']<k) fail();
int jc = 0;
int i = 0;
int ans = 0;
while(i<n&&jc<k) {
if(s[i]=='J') jc++;
else { f[s[i]]--; ans++; }
i++;
}
if(f['J']<k||f['O']<k||f['I']<k) fail();
int oc = 0;
while(i<n&&oc<k) {
if(s[i]=='O') oc++;
else { f[s[i]]--; ans++; }
i++;
}
if(f['J']<k||f['O']<k||f['I']<k) fail();
int ic = 0;
int bk = n-1;
while(bk>i&&ic<k) {
if(s[i]=='I') ic++;
else { f[s[i]]--; ans++; }
bk--;
}
if(f['J']<k||f['O']<k||f['I']<k) fail();
if(f['J']>k) ans -= f['J']-k;
if(f['K']>k) ans -= f['K']-k;
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... |