#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[100005];
int dp[100005][5][25];
int win(int x,int y)
{
if(x==1&&y==2)return 1;
if(x==2&&y==3)return 1;
if(y==3&&x==1)return 1;
return 0;
}
int minnum(int num)
{
if(num==1)return 2;
if(num==2)return 1;
if(num==3)return 1;
}
int maxnum(int num)
{
if(num==1)return 3;
if(num==2)return 3;
if(num==3)return 2;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
getchar();
char c;scanf("%c",&c);
int scan;if(c=='H')scan=1;if(c=='S')scan=2;if(c=='P')scan=3;
a[i]=scan;
}
//h:1 s:2 p:3
for(int j=1;j<=3;j++)dp[1][j][m]=win(j,a[1]);
for(int i=2;i<=n;i++)
{
for(int j=1;j<=3;j++)
{
for(int k=max(0,m-i+1);k<=m;k++)
{
dp[i][j][k]=max(dp[i][j][k],win(j,a[i])+dp[i-1][j][k]);
if(k==m)continue;
int num1,num2;num1=minnum(j);num2=maxnum(j);
dp[i][j][k]=max(dp[i][j][k],dp[i-1][num1][k+1]+win(j,a[i]));
dp[i][j][k]=max(dp[i][j][k],dp[i-1][num2][k+1]+win(j,a[i]));
}
}
}
int ans=0;
for(int j=1;j<=3;j++)for(int k=1;k<=m;k++)ans=max(ans,dp[n][j][k]);
printf("%d",ans);
}