#include <iostream>
#include<bits/stdc++.h>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
int nikita_string()
{
string st;cin>>st;
int n=st.size();
int ind_st,ind_en;
int mx=0,cont=0;
int cont_a_1=0,cont_b_1=0;
int cont_a_2=0,cont_b_2=0;
int ans=0;
int cont_st=0;
bool check=false;
for(int i=0;i<n;i++)
{
if(st[i]=='b')
{
cont++;
}
else
{
if(mx<cont&&i-cont!=0)
{
mx=cont;
ind_en=i;
check=true;
}
else if(cont>cont_st)
{
cont_st=cont;
}
cont=0;
}
}
if(check==false&&cont==0&&cont_st>0||cont_st==0&&check==false&&cont>0)
{
return st.size();
}
else if(check==false&&cont>0)
{
if(cont>=cont_st)
{
mx=cont;
ind_en=n;
}
else
{
mx=cont_st;
ind_en=mx;
}
}
ind_st=ind_en-mx;
// cout<<ind_en<<" "<<ind_st<<" "<<mx<<"\n";
for(int i=0;i<ind_st;i++)
{
if(st[i]=='a')
cont_a_1++;
else
cont_b_1++;
}
for(int i=n-1;i>=ind_en;i--)
{
if(st[i]=='a')
cont_a_2++;
else
cont_b_2++;
}
ans=max(cont_a_1,cont_b_1)+max(cont_a_2,cont_b_2)+mx;
//cout<<ans;
return ans;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int val=nikita_string();
cout<<val;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZTxzdHJpbmc+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG5pa2l0YV9zdHJpbmcoKQp7CiAgICBzdHJpbmcgc3Q7Y2luPj5zdDsKICAgIGludCBuPXN0LnNpemUoKTsKICAgIGludCBpbmRfc3QsaW5kX2VuOwogICAgaW50IG14PTAsY29udD0wOwogICAgaW50IGNvbnRfYV8xPTAsY29udF9iXzE9MDsKICAgIGludCBjb250X2FfMj0wLGNvbnRfYl8yPTA7CiAgICBpbnQgYW5zPTA7CiAgICBpbnQgY29udF9zdD0wOwogICAgYm9vbCBjaGVjaz1mYWxzZTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICB7CiAgICAgICAgaWYoc3RbaV09PSdiJykKICAgICAgICB7CiAgICAgICAgICAgIGNvbnQrKzsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgaWYobXg8Y29udCYmaS1jb250IT0wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteD1jb250OwogICAgICAgICAgICAgICAgaW5kX2VuPWk7CiAgICAgICAgICAgICAgICBjaGVjaz10cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoY29udD5jb250X3N0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb250X3N0PWNvbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29udD0wOwogICAgICAgIH0KICAgIH0KCiAgICBpZihjaGVjaz09ZmFsc2UmJmNvbnQ9PTAmJmNvbnRfc3Q+MHx8Y29udF9zdD09MCYmY2hlY2s9PWZhbHNlJiZjb250PjApCiAgICB7CiAgICAgICAgcmV0dXJuIHN0LnNpemUoKTsKICAgIH0KICAgICBlbHNlIGlmKGNoZWNrPT1mYWxzZSYmY29udD4wKQogICAgewogICAgICAgIGlmKGNvbnQ+PWNvbnRfc3QpCiAgICAgICAgewogICAgICAgICAgICBteD1jb250OwogICAgICAgICAgICBpbmRfZW49bjsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgbXg9Y29udF9zdDsKICAgICAgICAgICAgaW5kX2VuPW14OwogICAgICAgIH0KICAgIH0KCiAgICAgICAgaW5kX3N0PWluZF9lbi1teDsKICAgLy8gY291dDw8aW5kX2VuPDwiICI8PGluZF9zdDw8IiAiPDxteDw8IlxuIjsKICAgIGZvcihpbnQgaT0wO2k8aW5kX3N0O2krKykKICAgIHsKICAgICAgICBpZihzdFtpXT09J2EnKQogICAgICAgICAgICBjb250X2FfMSsrOwogICAgICAgIGVsc2UKICAgICAgICAgICAgY29udF9iXzErKzsKICAgIH0KICAgIGZvcihpbnQgaT1uLTE7aT49aW5kX2VuO2ktLSkKICAgIHsKICAgICAgICBpZihzdFtpXT09J2EnKQogICAgICAgICAgICBjb250X2FfMisrOwogICAgICAgIGVsc2UKICAgICAgICAgICAgY29udF9iXzIrKzsKICAgIH0KICAgIGFucz1tYXgoY29udF9hXzEsY29udF9iXzEpK21heChjb250X2FfMixjb250X2JfMikrbXg7CiAgICAvL2NvdXQ8PGFuczsKICAgIHJldHVybiBhbnM7CgoKfQoKaW50IG1haW4oKQp7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgY291dC50aWUobnVsbHB0cik7CgogICAgaW50IHZhbD1uaWtpdGFfc3RyaW5nKCk7CiAgICBjb3V0PDx2YWw7CgogICAgcmV0dXJuIDA7Cn0K