#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ld long double
#define eb emplace_back
#define pb push_back
#define fi first
#define se second
#define nn '\n'
#define pi pair<int, int>
#define unmp unordered_map
#define uns unordered_set
#define lb lower_bound
#define ub upper_bound
#define pq priority_queue
#define TASK " "
const int INF = 1e18;
const int mod = 1e9+7;
const int N = 2e5 + 5;
int MOD = 998244353;
int bit[200000];
int n, q, k, d;
string s;
int a[N];
int b[N];
int c[N];
int p[N];
int pm[N];
int lans, rans;
int kq = -2;
bool check(int m, int r){
return p[r] - pm[m - 1] > 0;
}
bool anhphucbell(int x){
for(int i = 1;i <= n; i++){
p[i] = p[ i - 1] + a[i];
pm[i] = min(pm[i - 1], p[i]);
}
for(int r = 1; r <= n; r++){
int l_ = 1, r_ = r, ans = -1;
while(l_ <= r_){
int mid = (l_ + r_) / 2;
if(check(mid, r)){
ans = mid;
r_ = mid - 1;
}
else l_ = mid + 1;
}
if(ans != -1){
if(r - ans + 1 >= d){
lans = ans;
rans = r;
return true;
}
}
}
return false;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
cin >> s;
for(int i = 1; i <= n; i++){
if(s[i - 1] == 'a'){
a[i]++;
b[i]--;
c[i]--;
}
else if(s[i - 1] == 'b'){
a[i]--;
b[i]++;
c[i]--;
}
else if(s[i - 1] == 'c'){
a[i]--;
b[i]--;
c[i]++;
}
}
memset(p, 0, sizeof(p));
memset(pm, 0, sizeof(pm));
for(int i = 1;i <= n; i++){
p[i] = p[ i - 1] + a[i];
pm[i] = min(pm[i - 1], p[i]);
}
for(int r = 1; r <= n; r++){
int l_ = 1, r_ = r, ans = -1;
while(l_ <= r_){
int mid = (l_ + r_) / 2;
if(check(mid, r)){
ans = mid;
r_ = mid - 1;
}
else l_ = mid + 1;
}
if(ans != -1){
kq = max(kq, r - ans + 1);
}
}
memset(p, 0, sizeof(p));
memset(pm, 0, sizeof(pm));
for(int i = 1;i <= n; i++){
p[i] = p[ i - 1] + b[i];
pm[i] = min(pm[i - 1], p[i]);
}
for(int r = 1; r <= n; r++){
int l_ = 1, r_ = r, ans = -1;
while(l_ <= r_){
int mid = (l_ + r_) / 2;
if(check(mid, r)){
ans = mid;
r_ = mid - 1;
}
else l_ = mid + 1;
}
if(ans != -1){
kq = max(kq, r - ans + 1);
}
}
memset(p, 0, sizeof(p));
memset(pm, 0, sizeof(pm));
for(int i = 1;i <= n; i++){
p[i] = p[ i - 1] + c[i];
pm[i] = min(pm[i - 1], p[i]);
}
for(int r = 1; r <= n; r++){
int l_ = 1, r_ = r, ans = -1;
while(l_ <= r_){
int mid = (l_ + r_) / 2;
if(check(mid, r)){
ans = mid;
r_ = mid - 1;
}
else l_ = mid + 1;
}
if(ans != -1){
kq = max(kq, r - ans + 1);
}
}
cout << kq << nn;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBlYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIG5uICdcbicKI2RlZmluZSBwaSBwYWlyPGludCwgaW50PgojZGVmaW5lIHVubXAgdW5vcmRlcmVkX21hcAojZGVmaW5lIHVucyB1bm9yZGVyZWRfc2V0CiNkZWZpbmUgbGIgbG93ZXJfYm91bmQKI2RlZmluZSB1YiB1cHBlcl9ib3VuZAojZGVmaW5lIHBxIHByaW9yaXR5X3F1ZXVlCiNkZWZpbmUgVEFTSyAiICIKCmNvbnN0IGludCBJTkYgPSAxZTE4Owpjb25zdCBpbnQgbW9kID0gMWU5Kzc7CmNvbnN0IGludCBOID0gMmU1ICsgNTsKaW50IE1PRCA9IDk5ODI0NDM1MzsKaW50IGJpdFsyMDAwMDBdOwppbnQgbiwgcSwgaywgZDsKc3RyaW5nIHM7CmludCBhW05dOwppbnQgYltOXTsKaW50IGNbTl07CmludCBwW05dOwppbnQgcG1bTl07CmludCBsYW5zLCByYW5zOwppbnQga3EgPSAtMjsKYm9vbCBjaGVjayhpbnQgbSwgaW50IHIpewogICAgcmV0dXJuIHBbcl0gLSBwbVttIC0gMV0gPiAwOwp9CmJvb2wgYW5ocGh1Y2JlbGwoaW50IHgpewogICAgZm9yKGludCBpID0gMTtpIDw9IG47IGkrKyl7CiAgICAgICAgcFtpXSA9IHBbIGkgLSAxXSArIGFbaV07CiAgICAgICAgcG1baV0gPSBtaW4ocG1baSAtIDFdLCBwW2ldKTsKICAgIH0KCiAgICBmb3IoaW50ICByID0gMTsgciA8PSBuOyByKyspewogICAgICAgIGludCBsXyA9IDEsIHJfID0gciwgYW5zID0gLTE7CiAgICAgICAgd2hpbGUobF8gPD0gcl8pewogICAgICAgICAgICBpbnQgbWlkID0gKGxfICsgcl8pIC8gMjsKICAgICAgICAgICAgaWYoY2hlY2sobWlkLCByKSl7CiAgICAgICAgICAgICAgICBhbnMgPSBtaWQ7CiAgICAgICAgICAgICAgICByXyA9IG1pZCAtIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBsXyA9IG1pZCArIDE7CiAgICAgICAgfQogICAgICAgIGlmKGFucyAhPSAtMSl7CiAgICAgICAgICAgIGlmKHIgLSBhbnMgKyAxID49IGQpewogICAgICAgICAgICAgICAgbGFucyA9IGFuczsKICAgICAgICAgICAgICAgIHJhbnMgPSByOwogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0Kc2lnbmVkIG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICBjaW4gPj4gbjsKICAgIGNpbiA+PiBzOwogICAgZm9yKGludCBpICA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBpZihzW2kgLSAxXSA9PSAnYScpewogICAgICAgIAlhW2ldKys7CiAgICAgICAgCWJbaV0tLTsKICAgICAgICAJY1tpXS0tOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKHNbaSAtIDFdID09ICdiJyl7CiAgICAgICAgCWFbaV0tLTsKICAgICAgICAJYltpXSsrOwogICAgICAgIAljW2ldLS07CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoc1tpIC0gMV0gPT0gJ2MnKXsKICAgICAgICAJYVtpXS0tOwogICAgICAgIAliW2ldLS07CiAgICAgICAgCWNbaV0rKzsKICAgICAgICB9CiAgICB9CiAgICBtZW1zZXQocCwgMCwgc2l6ZW9mKHApKTsKICAgIG1lbXNldChwbSwgMCwgc2l6ZW9mKHBtKSk7CiAgICBmb3IoaW50IGkgPSAxO2kgPD0gbjsgaSsrKXsKICAgICAgICBwW2ldID0gcFsgaSAtIDFdICsgYVtpXTsKICAgICAgICBwbVtpXSA9IG1pbihwbVtpIC0gMV0sIHBbaV0pOwogICAgfQogICAgZm9yKGludCAgciA9IDE7IHIgPD0gbjsgcisrKXsKICAgICAgICBpbnQgbF8gPSAxLCByXyA9IHIsIGFucyA9IC0xOwogICAgICAgIHdoaWxlKGxfIDw9IHJfKXsKICAgICAgICAgICAgaW50IG1pZCA9IChsXyArIHJfKSAvIDI7CiAgICAgICAgICAgIGlmKGNoZWNrKG1pZCwgcikpewogICAgICAgICAgICAgICAgYW5zID0gbWlkOwogICAgICAgICAgICAgICAgcl8gPSBtaWQgLSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgbF8gPSBtaWQgKyAxOwogICAgICAgIH0KICAgICAgICBpZihhbnMgIT0gLTEpewogICAgICAgICAgICBrcSA9IG1heChrcSwgciAtIGFucyArIDEpOwogICAgICAgIAl9CiAgICB9CgoKICAgIG1lbXNldChwLCAwLCBzaXplb2YocCkpOwogICAgbWVtc2V0KHBtLCAwLCBzaXplb2YocG0pKTsKICAgIGZvcihpbnQgaSA9IDE7aSA8PSBuOyBpKyspewogICAgICAgIHBbaV0gPSBwWyBpIC0gMV0gKyBiW2ldOwogICAgICAgIHBtW2ldID0gbWluKHBtW2kgLSAxXSwgcFtpXSk7CiAgICB9CiAgICBmb3IoaW50ICByID0gMTsgciA8PSBuOyByKyspewogICAgICAgIGludCBsXyA9IDEsIHJfID0gciwgYW5zID0gLTE7CiAgICAgICAgd2hpbGUobF8gPD0gcl8pewogICAgICAgICAgICBpbnQgbWlkID0gKGxfICsgcl8pIC8gMjsKICAgICAgICAgICAgaWYoY2hlY2sobWlkLCByKSl7CiAgICAgICAgICAgICAgICBhbnMgPSBtaWQ7CiAgICAgICAgICAgICAgICByXyA9IG1pZCAtIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBsXyA9IG1pZCArIDE7CiAgICAgICAgfQogICAgICAgIGlmKGFucyAhPSAtMSl7CiAgICAgICAgICAgIGtxID0gbWF4KGtxLCByIC0gYW5zICsgMSk7CiAgICAgICAgfQogICAgfQogICAgbWVtc2V0KHAsIDAsIHNpemVvZihwKSk7CiAgICBtZW1zZXQocG0sIDAsIHNpemVvZihwbSkpOwogICAgZm9yKGludCBpID0gMTtpIDw9IG47IGkrKyl7CiAgICAgICAgcFtpXSA9IHBbIGkgLSAxXSArIGNbaV07CiAgICAgICAgcG1baV0gPSBtaW4ocG1baSAtIDFdLCBwW2ldKTsKICAgIH0KICAgIGZvcihpbnQgIHIgPSAxOyByIDw9IG47IHIrKyl7CiAgICAgICAgaW50IGxfID0gMSwgcl8gPSByLCBhbnMgPSAtMTsKICAgICAgICB3aGlsZShsXyA8PSByXyl7CiAgICAgICAgICAgIGludCBtaWQgPSAobF8gKyByXykgLyAyOwogICAgICAgICAgICBpZihjaGVjayhtaWQsIHIpKXsKICAgICAgICAgICAgICAgIGFucyA9IG1pZDsKICAgICAgICAgICAgICAgIHJfID0gbWlkIC0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGxfID0gbWlkICsgMTsKICAgICAgICB9CiAgICAgICAgaWYoYW5zICE9IC0xKXsKICAgICAgICAgICAga3EgPSBtYXgoa3EsIHIgLSBhbnMgKyAxKTsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCBrcSA8PCBubjsKICAgIHJldHVybiAwOwp9Cg==