// 原理其实就是,用flag记住自己上一个字符
// flag初始状态是一个不是a和h的字符
// 如果遇到a和h的话,就直接对当前的最大长度加一,然后标记上一个字符为a或h
// 如果不是的话,就直接标记不是然后让它归零

#include <bits/stdc++.h>
using namespace std;

void solve()
{
    int n;cin>>n;string s;cin>>s;
    if (n == 1)
    {
        if(s[0] == 'a'||s[0] == 'h')
        {
            cout<<1;
            return ;
        }
    }
    char flag = 'b';
    // 当首次接触到a或者h时会对flag进行赋值
    // 因为不相等
    // 在之后就会只有这个字符和前一个字符不相等才会计算长度
    int max_so_far = 0,max_ending_here = 0;
    for (int i = 0;i < n;i++)
    {
        if (s[i] == 'a')
        {
            if(flag != s[i])
            {
                max_ending_here++;
                flag = s[i];
            }
            else   
            {
                max_so_far = max(max_so_far,max_ending_here);
                max_ending_here = 1;
                flag = s[i];
            }
        }
        else if (s[i] == 'h')   
        {
            if (flag != s[i])
            {
                max_ending_here ++;
                flag= s[i];
            }
            else   
            {
                max_so_far = max(max_so_far,max_ending_here);
                max_ending_here = 1;
                flag = s[i];
            }
        }
        else  
        {
            max_so_far = max(max_so_far,max_ending_here);
            max_ending_here = 0;
            flag = s[i];
        }
    }
    max_so_far = max(max_so_far,max_ending_here);
    cout<<max_so_far<<'\n';
}
int main()
{
    ios::sync_with_stdio(false);cin.tie(nullptr);solve();    return 0;
}