import java.util.*;
import java.io.*;
public class ho_t2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(System.out);
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
int [] jp = new int[N+1];
int [] op = new int[N+1];
int [] ip = new int[N+1];
ArrayList<Integer> j = new ArrayList<Integer>();
ArrayList<Integer> o = new ArrayList<Integer>();
ArrayList<Integer> i = new ArrayList<Integer>();
st = new StringTokenizer(br.readLine());
String S = st.nextToken();
jp[0] = 0;op[0] = 0;ip[0] = 0;
for (int k=0;k<N;k++) {
jp[k+1] = jp[k];
op[k+1] = op[k];
ip[k+1] = ip[k];
char c = S.charAt(k);
if (c=='J') {
jp[k+1]++;
j.add(k);
} else if (c=='O') {
op[k+1]++;
o.add(k);
} else {
ip[k+1]++;
i.add(k);
}
}
int ans = Integer.MAX_VALUE;
if (j.size()>=K) {
int jend = K-1;
int oend = 0;
int iend = 0;
while (jend<j.size()) {
while (oend<o.size() && op[o.get(oend)+1]-op[j.get(jend)]<K) oend++;
if (oend>=o.size()) break;
while (iend<i.size() && ip[i.get(iend)+1]-ip[o.get(oend)]<K) iend++;
if (iend>=i.size()) break;
ans = Math.min(ans, i.get(iend)-j.get(jend-K+1)+1-3*K);
jend++;
}
}
if (ans==Integer.MAX_VALUE) ans = -1;
pw.println(ans);
pw.close();
br.close();
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |