#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int cj[N],co[N],ci[N],pj[N],po[N],pi[N];
int main(){
int n,k;
cin>>n >>k;
string s;
cin>>s;
for(int i=0;i<n;i++){
if(s[i]=='J') cj[i+1]++;
else if(s[i]=='O') co[i+1]++;
else ci[i+1]++;
}
for(int i=1;i<=n;i++) cj[i]+=cj[i-1],co[i]+=co[i-1],ci[i]+=ci[i-1];
for(int i=n+1;i<=n+2;i++) pj[i]=po[i]=pi[i]=n+1;
for(int i=1;i<=n;i++){
int tmpj,tmpo,tmpi;
tmpj=tmpo=tmpi=k;
if(s[i-1]=='J') tmpj--;
if(s[i-1]=='O') tmpo--;
if(s[i-1]=='I') tmpi--;
pj[i]=lower_bound(cj+i,cj+n+1,cj[i]+tmpj)-cj;
po[i]=lower_bound(co+i,co+n+1,co[i]+tmpo)-co;
pi[i]=lower_bound(ci+i,ci+n+1,ci[i]+tmpi)-ci;
}
int ans=INT_MAX;
for(int i=1;i<=n;i++){
int now=i;
now=pj[now];
now=po[now+1];
now=pi[now+1];
if(now!=n+1) ans=min(ans,now-i+1-3*k);
}
if(ans==INT_MAX) cout<<-1;
else cout<<ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |