#include <iostream>
#include<string.h>
using namespace std;
const int INF = 0x3f3f3f3f;
int n, k;
string s;
int len, book[200002];
int main() {
cin >> n >> k;
cin >> s;
len = s.length();
int ans = INF;
for (int i = 0; i < 26; i++) {
char ch = 'a' + i;
int cnt = 0;
memset(book, 0, sizeof(book)); //清0
for (int j = 0; j < len; j++) { //记录ch的所有位置
if (s[j] == ch) {
book[cnt++] = j;
}
}
if (cnt < k) continue; //如果ch不够k个
for (int j = 0; j <= cnt - k; j++) { //连续的k个为一个子串,更新最小值
ans = min(ans, book[j + k - 1] - book[j] + 1);
}
}
if (ans < INF) cout << ans << endl;
else cout << -1 << endl;
return 0;
}
c++标准库中,min(),max(),来比较两个数字的大小