#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int,int>
#define ff first
#define ss second
#define pb push_back
#define vi vector<int>
#define fr(i,ii,iii) for(int i=ii;i<iii;i++)
const int N=2e5+5;
int n,k,c[N],pr[N],sf[N];
int cc[N],cpr[N],csf[N];
string a;
int ans=N;
int main(){
	ios_base::sync_with_stdio(NULL);cin.tie(NULL);
	cin>>n>>k>>a;
	a="@"+a;
	fr(i,1,n+1){
		cc[i]=cpr[i]=csf[i]=-1;
	}
	fr(i,1,n+1){
		c[i]=c[i-1]+(a[i]=='O');
		if(cc[c[i]]==-1)cc[c[i]]=i;
	}
	fr(i,1,n+1){
		pr[i]=pr[i-1]+(a[i]=='J');
		if(cpr[pr[i]]==-1)cpr[pr[i]]=i;
	}
	for(int i=n;i>=1;i--){
		sf[i]=sf[i+1]+(a[i]=='I');
		if(csf[sf[i]]==-1)csf[sf[i]]=i;
	}
	//fr(i,1,n+1)cout<<c[i]<<" ";cout<<"\n";
	//fr(i,1,n+1)cout<<pr[i]<<" ";cout<<"\n";
	//fr(i,1,n+1)cout<<sf[i]<<" ";cout<<"\n";
	//fr(i,5,6){
	fr(i,1,n+1){
		//cout<<"\n";
		//cout<<i<<" -i\n";
		if(a[i]!='O')continue;
		int o=c[i];
		if(o+k-1<0)continue;
		int o1=cc[o+k-1];
		//cout<<o1<<" -o1\n";
		if(o1==-1)continue;
		int j=pr[i-1];
		int j1=cpr[j-k+1];
		if(j-k<0)continue;
		//cout<<j1<<" -j1\n";
		if(j1==-1)continue;
		int l=sf[o1+1];
		int l1=csf[l-k+1];
		//cout<<l1<<" -l1\n";
		if(l1==-1)continue;
		int ins=(o1-i+1)-k;
		int left=i-j1-k;
		int right=l1-o1-k;
		//cout<<left<<" "<<ins<<" "<<right<<"\n";
		ans=min(ans,ins+left+right);
	}
	if(ans==N)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... |