/*
Task: 877B
Date: Dec 21, 2020
Author: aLittleLove (Minh Vu)
*/
#include<bits/stdc++.h>
#define rep(i,n) for (int i=0, _n=n; i<_n; i++)
#define FOR(i,a,b) for (int _a=(a), _b=(b), i=_a; _a<=_b?i<=_b:i>=_b; _a<=_b?i++:i--)
#define _mem(a, b) memset(a, (b), sizeof(a))
#define pb push_back
#define fi first
#define se second
#define sz(a) int((a).size())
using namespace std;
typedef long long ll;
typedef int64_t i64;
typedef pair<int, int> pii;
typedef vector<pii> vii;
typedef vector<int> vi;
const int N = 2e5 + 5;
const int inf = 1e9;
const int mod = 1e9 + 7;
const double pi = atan(1) * 4.0;
template<typename T, typename U> inline void mini(T &x, U y) { if(y < x) x = y; }
template<typename T, typename U> inline void maxi(T &x, U y) { if(x < y) x = y; }
int prefA[N], prefB[N];
void Solve()
{
string s; cin >> s;
int n = sz(s);
s = ' ' + s;
for (int i=1; i<=n; i++)
{
prefA[i] = prefA[i - 1] + (s[i]=='a');
prefB[i] = prefB[i - 1] + (s[i]=='b');
}
int res = 0;
for (int i=1; i<=n; i++)
{
for (int j=i; j<=n; j++)
{
res = max(res, prefA[i] + prefB[j] - prefB[i] + prefA[n] - prefA[j]);
res = max(res, prefB[j] + prefA[n] - prefA[j]);
res = max(res, prefA[i] + prefB[n] - prefB[i]);
res = max(res, prefB[j]);
res = max(res, prefA[j]);
}
}
cout << res << '\n';
}
int main()
{
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
//freopen("input.txt","r",stdin);
int nTest; //cin >> nTest;
nTest = 1;
while (nTest--) Solve();
return 0;
}
LyoKVGFzazogODc3QgpEYXRlOiBEZWMgMjEsIDIwMjAKQXV0aG9yOiBhTGl0dGxlTG92ZSAoTWluaCBWdSkKKi8KCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcmVwKGksbikgZm9yIChpbnQgaT0wLCBfbj1uOyBpPF9uOyBpKyspCiNkZWZpbmUgRk9SKGksYSxiKSBmb3IgKGludCBfYT0oYSksIF9iPShiKSwgaT1fYTsgX2E8PV9iP2k8PV9iOmk+PV9iOyBfYTw9X2I/aSsrOmktLSkKI2RlZmluZSBfbWVtKGEsIGIpIG1lbXNldChhLCAoYiksIHNpemVvZihhKSkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHN6KGEpIGludCgoYSkuc2l6ZSgpKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgaW50NjRfdCBpNjQ7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGlpOwp0eXBlZGVmIHZlY3RvcjxwaWk+IHZpaTsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKY29uc3QgaW50IE4gPSAyZTUgKyA1Owpjb25zdCBpbnQgaW5mID0gMWU5Owpjb25zdCBpbnQgbW9kID0gMWU5ICsgNzsKY29uc3QgZG91YmxlIHBpID0gYXRhbigxKSAqIDQuMDsKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIHZvaWQgbWluaShUICZ4LCBVIHkpIHsgaWYoeSA8IHgpIHggPSB5OyB9CnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSB2b2lkIG1heGkoVCAmeCwgVSB5KSB7IGlmKHggPCB5KSB4ID0geTsgfQoKaW50IHByZWZBW05dLCBwcmVmQltOXTsKCnZvaWQgU29sdmUoKQp7CiAgICBzdHJpbmcgczsgY2luID4+IHM7CiAgICBpbnQgbiA9IHN6KHMpOwogICAgcyA9ICcgJyArIHM7CiAgICBmb3IgKGludCBpPTE7IGk8PW47IGkrKykgCiAgICB7CiAgICAgICAgcHJlZkFbaV0gPSBwcmVmQVtpIC0gMV0gKyAoc1tpXT09J2EnKTsKICAgICAgICBwcmVmQltpXSA9IHByZWZCW2kgLSAxXSArIChzW2ldPT0nYicpOwogICAgfQogICAgaW50IHJlcyA9IDA7CiAgICBmb3IgKGludCBpPTE7IGk8PW47IGkrKykKICAgIHsKICAgICAgICBmb3IgKGludCBqPWk7IGo8PW47IGorKykKICAgICAgICB7CiAgICAgICAgICAgIHJlcyA9IG1heChyZXMsIHByZWZBW2ldICsgcHJlZkJbal0gLSBwcmVmQltpXSArIHByZWZBW25dIC0gcHJlZkFbal0pOwogICAgICAgICAgICByZXMgPSBtYXgocmVzLCBwcmVmQltqXSArIHByZWZBW25dIC0gcHJlZkFbal0pOwogICAgICAgICAgICByZXMgPSBtYXgocmVzLCBwcmVmQVtpXSArIHByZWZCW25dIC0gcHJlZkJbaV0pOwogICAgICAgICAgICByZXMgPSBtYXgocmVzLCBwcmVmQltqXSk7CiAgICAgICAgICAgIHJlcyA9IG1heChyZXMsIHByZWZBW2pdKTsKICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IHJlcyA8PCAnXG4nOwp9CgppbnQgbWFpbigpCnsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIC8vZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwogICAgaW50IG5UZXN0OyAvL2NpbiA+PiBuVGVzdDsKICAgIG5UZXN0ID0gMTsKICAgIHdoaWxlIChuVGVzdC0tKSBTb2x2ZSgpOwoKICAgIHJldHVybiAwOwp9