#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;
int s = 0, e = 0;
deque<char> up, down;
while(e<n){
while(!up.empty() && str[up.back()] > str[e] ) up.pop_back();
up.push_back(e);
while(!down.empty() && str[down.back()] < str[e] ) down.pop_back();
down.push_back(e);
//* Invalid window => Shrink it (untill it becomes valid)
while(s<=e){
int mini = (str[up.front()] - 'a');
int maxi = (str[down.front()] - 'a');
if(maxi - mini <= k ){
break;
}
if(up.front() == s) up.pop_front();
if(down.front() == s) down.pop_front();
s++;
}
int len = e-s+1;
ans = max(ans, len);
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+Pj0gMTsKICAgIH0KICAgIHJldHVybiB4Owp9CgoKY29uc3QgaW50IE0gPSAxMDAwMDAwMDA3Owpjb25zdCBpbnQgTiA9IDNlNSs5Owpjb25zdCBpbnQgSU5GID0gMmU5KzE7CmNvbnN0IGludCBMSU5GID0gMjAwMDAwMDAwMDAwMDAwMDAwMTsKCi8vXyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBTVEFSVCBCZWxvdyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoKLy8qIFN0YXJ0IHdpdGggdmFsaWQgd2luZG93IAoKdm9pZCBjb25zaXN0ZW5jeShzdHJpbmcgc3RyLCBpbnQgaykgewoJaW50IG4gPSBzdHIuc2l6ZSgpOwoJCglpbnQgYW5zID0gMDsKCQoJCglpbnQgcyA9IDAsIGUgPSAwOwoJZGVxdWU8Y2hhcj4gdXAsIGRvd247CgkKCXdoaWxlKGU8bil7CgkJd2hpbGUoIXVwLmVtcHR5KCkgJiYgc3RyW3VwLmJhY2soKV0gID4gc3RyW2VdICkgdXAucG9wX2JhY2soKTsKCQl1cC5wdXNoX2JhY2soZSk7CgkJCgkJd2hpbGUoIWRvd24uZW1wdHkoKSAmJiBzdHJbZG93bi5iYWNrKCldIDwgc3RyW2VdICkgZG93bi5wb3BfYmFjaygpOwoJCWRvd24ucHVzaF9iYWNrKGUpOwoJCQoJCS8vKiBJbnZhbGlkIHdpbmRvdyA9PiBTaHJpbmsgaXQgKHVudGlsbCBpdCBiZWNvbWVzIHZhbGlkKQoJCXdoaWxlKHM8PWUpewoJCQlpbnQgbWluaSA9IChzdHJbdXAuZnJvbnQoKV0gLSAnYScpOwoJCQlpbnQgbWF4aSA9IChzdHJbZG93bi5mcm9udCgpXSAtICdhJyk7CgkJCWlmKG1heGkgLSBtaW5pIDw9IGsgKXsKCQkJCWJyZWFrOwoJCQl9CgkJCQoJCQlpZih1cC5mcm9udCgpID09IHMpIHVwLnBvcF9mcm9udCgpOwoJCQlpZihkb3duLmZyb250KCkgPT0gcykgZG93bi5wb3BfZnJvbnQoKTsKCQkJcysrOwoJCX0KCQkKCQlpbnQgbGVuID0gZS1zKzE7CgkJYW5zID0gbWF4KGFucywgbGVuKTsKCQkKCQllKys7Cgl9CgkKCWNvdXQgPDwgYW5zIDw8IGVuZGw7CgkKfQoKCnZvaWQgc29sdmUoKSB7CiAgICAKICAgIGludCBrOwogICAgY2luID4+IGs7CiAgICAKCXN0cmluZyBzdHI7CgljaW4gPj4gc3RyOwogICAgCiAgICBjb25zaXN0ZW5jeShzdHIsIGspOwoKfQoKCgoKCmludDMyX3QgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKICAgIGludCB0ID0gMTsKICAgIC8vIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkgewogICAgICAgIHNvbHZlKCk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=