#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define double long double
inline int power(int a, int b) {
int x = 1;
while (b) {
if (b & 1) x *= a;
a *= a;
b >>= 1;
}
return x;
}
const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;
//_ ***************************** START Below *******************************
//* Start with valid window
void consistency(string str, int k) {
int n = str.size();
int ans = 0;
deque<int> up, down;
int s = 0 , e = 0;
while(e<n){
while(!up.empty() && str[e] < str[up.front()]) up.pop_front();
up.push_back(e);
while(!down.empty() && str[e] > str[down.front()]) down.pop_front();
down.push_back(e);
while(s<=e){
int maxi = str[down.front()];
int mini = str[up.front()];
if(maxi - mini <= k) break;
if(up.front() == s) up.pop_front();
if(down.front() == s) down.pop_front();
s++;
}
ans = max(ans, e-s+1);
e++;
}
cout << ans << endl;
}
void solve() {
int k;
cin >> k;
string str;
cin >> str;
consistency(str, k);
}
int32_t main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50ICAgICAgICAgICAgICBsb25nIGxvbmcgaW50CiNkZWZpbmUgZG91YmxlICAgICAgICAgICBsb25nIGRvdWJsZQppbmxpbmUgaW50IHBvd2VyKGludCBhLCBpbnQgYikgewogICAgaW50IHggPSAxOwogICAgd2hpbGUgKGIpIHsKICAgICAgICBpZiAoYiAmIDEpIHggKj0gYTsKICAgICAgICBhICo9IGE7CiAgICAgICAgYiA+Pj0gMTsKICAgIH0KICAgIHJldHVybiB4Owp9CgoKY29uc3QgaW50IE0gPSAxMDAwMDAwMDA3Owpjb25zdCBpbnQgTiA9IDNlNSs5Owpjb25zdCBpbnQgSU5GID0gMmU5KzE7CmNvbnN0IGludCBMSU5GID0gMjAwMDAwMDAwMDAwMDAwMDAwMTsKCi8vXyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBTVEFSVCBCZWxvdyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoKLy8qIFN0YXJ0IHdpdGggdmFsaWQgd2luZG93IAoKdm9pZCBjb25zaXN0ZW5jeShzdHJpbmcgc3RyLCBpbnQgaykgewoJaW50IG4gPSBzdHIuc2l6ZSgpOwoJCglpbnQgYW5zID0gMDsKCWRlcXVlPGludD4gdXAsIGRvd247CgkKCWludCBzID0gMCAsIGUgPSAwOwoJCgl3aGlsZShlPG4pewoJCXdoaWxlKCF1cC5lbXB0eSgpICYmIHN0cltlXSA8IHN0clt1cC5mcm9udCgpXSkgdXAucG9wX2Zyb250KCk7CgkJdXAucHVzaF9iYWNrKGUpOwoJCQoJCXdoaWxlKCFkb3duLmVtcHR5KCkgJiYgc3RyW2VdID4gc3RyW2Rvd24uZnJvbnQoKV0pIGRvd24ucG9wX2Zyb250KCk7CgkJZG93bi5wdXNoX2JhY2soZSk7CgkJCgkJd2hpbGUoczw9ZSl7CgkJCWludCBtYXhpID0gc3RyW2Rvd24uZnJvbnQoKV07CgkJCWludCBtaW5pID0gc3RyW3VwLmZyb250KCldOwoJCQkKCQkJaWYobWF4aSAtIG1pbmkgPD0gaykgYnJlYWs7CgkJCQoJCQlpZih1cC5mcm9udCgpID09IHMpIHVwLnBvcF9mcm9udCgpOwoJCQlpZihkb3duLmZyb250KCkgPT0gcykgZG93bi5wb3BfZnJvbnQoKTsKCQkJcysrOwoJCX0KCQkKCQlhbnMgPSBtYXgoYW5zLCBlLXMrMSk7CgkJZSsrOwoJCQoJfQoJCgljb3V0IDw8IGFucyA8PCBlbmRsOwoJCn0KCgp2b2lkIHNvbHZlKCkgewogICAgCiAgICBpbnQgazsKICAgIGNpbiA+PiBrOwogICAgCglzdHJpbmcgc3RyOwoJY2luID4+IHN0cjsKICAgIAogICAgY29uc2lzdGVuY3koc3RyLCBrKTsKCn0KCgoKCgppbnQzMl90IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKCiAgICBpbnQgdCA9IDE7CiAgICAvLyBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9