#include <iostream>
#include <cstdio>
#include <set>

using namespace std;

const int N=300005;
int n, m, res;
char a[N];
int n_a[N], n_b[N], d[N];

inline bool is_valid(int from, int to)
{
    bool ret=n_a[to]-n_a[from-1]>=n_b[to]-n_b[from-1];
    return ret;
}

int main()
{
    freopen("muzej.in", "r", stdin);
    freopen("muzej.out", "w", stdout);
    scanf("%d%d", &n, &m);
    scanf("%s", a+1);

    n_a[0]=n_b[0]=0;
    //fprintf(stderr, "n_a:\n\t");
    for(int i=1;i<=n;i++)
    {
        n_a[i]=n_a[i-1]+((a[i]=='a')?1:0);
        n_b[i]=n_b[i-1]+((a[i]=='b')?1:0);
    }

    //fprintf(stderr, "d:\n");
    for(int i=1;i<=m;i++)
    {
        d[i]=is_valid(1, i);
        //fprintf(stderr, "interval [%d, %d] is %s valid\n", 1, i, d[i]?"":"not");
        for(int j=1;j<i;j++)
        {
            if(is_valid(1, j)&&is_valid(j+1, i))
            {
                d[i]=max(d[i], d[j]+1);
            }
        }
        //fprintf(stderr, "d[%d] = %d\n", i, d[i]);
    }
    res=0;
    for(int i=1;i<m;i++)
    {
        if(is_valid(1, i)&&is_valid(i+1, n))
        {
            res=max(res, d[i]);
        }
    }

    printf("%d\n", res);

    return 0;
}
