#include <bits/stdc++.h>
using namespace std;
int solve_for(char king, const string &s) {
int n = s.size();
vector<int> pref(n + 1, 0);
for (int i = 1; i <= n; i++) {
if (s[i - 1] == king) pref[i] = pref[i - 1] + 1;
else pref[i] = pref[i - 1] - 1;
}
vector<int> minPref(n + 1), pos(n + 1);
minPref[0] = pref[0];
pos[0] = 0;
for (int i = 1; i <= n; i++) {
if (pref[i] < minPref[i - 1]) {
minPref[i] = pref[i];
pos[i] = i;
} else {
minPref[i] = minPref[i - 1];
pos[i] = pos[i - 1];
}
}
int ans = 0;
for (int r = 1; r <= n; r++) {
int l = lower_bound(minPref.begin(), minPref.end(), pref[r])
- minPref.begin();
if (l > 0) {
ans = max(ans, r - pos[l - 1]);
}
}
return ans;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
string s;
cin >> s;
int ans = 0;
ans = max(ans, solve_for('a', s));
ans = max(ans, solve_for('b', s));
ans = max(ans, solve_for('c', s));
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgc29sdmVfZm9yKGNoYXIga2luZywgY29uc3Qgc3RyaW5nICZzKSB7CiAgICBpbnQgbiA9IHMuc2l6ZSgpOwogICAgdmVjdG9yPGludD4gcHJlZihuICsgMSwgMCk7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgaWYgKHNbaSAtIDFdID09IGtpbmcpIHByZWZbaV0gPSBwcmVmW2kgLSAxXSArIDE7CiAgICAgICAgZWxzZSBwcmVmW2ldID0gcHJlZltpIC0gMV0gLSAxOwogICAgfQoKICAgIHZlY3RvcjxpbnQ+IG1pblByZWYobiArIDEpLCBwb3MobiArIDEpOwogICAgbWluUHJlZlswXSA9IHByZWZbMF07CiAgICBwb3NbMF0gPSAwOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGlmIChwcmVmW2ldIDwgbWluUHJlZltpIC0gMV0pIHsKICAgICAgICAgICAgbWluUHJlZltpXSA9IHByZWZbaV07CiAgICAgICAgICAgIHBvc1tpXSA9IGk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbWluUHJlZltpXSA9IG1pblByZWZbaSAtIDFdOwogICAgICAgICAgICBwb3NbaV0gPSBwb3NbaSAtIDFdOwogICAgICAgIH0KICAgIH0KCiAgICBpbnQgYW5zID0gMDsKICAgIGZvciAoaW50IHIgPSAxOyByIDw9IG47IHIrKykgewogICAgICAgIGludCBsID0gbG93ZXJfYm91bmQobWluUHJlZi5iZWdpbigpLCBtaW5QcmVmLmVuZCgpLCBwcmVmW3JdKSAKICAgICAgICAgICAgICAgIC0gbWluUHJlZi5iZWdpbigpOwogICAgICAgIGlmIChsID4gMCkgewogICAgICAgICAgICBhbnMgPSBtYXgoYW5zLCByIC0gcG9zW2wgLSAxXSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGFuczsKfQoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICBzdHJpbmcgczsKICAgIGNpbiA+PiBzOwoKICAgIGludCBhbnMgPSAwOwogICAgYW5zID0gbWF4KGFucywgc29sdmVfZm9yKCdhJywgcykpOwogICAgYW5zID0gbWF4KGFucywgc29sdmVfZm9yKCdiJywgcykpOwogICAgYW5zID0gbWF4KGFucywgc29sdmVfZm9yKCdjJywgcykpOwoKICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7Cn0K