#include<stdio.h>
int D[121212][21][3];
int trans[256];
int max(int a, int b) { if (a < b)return b; return a; }
int main() {
trans['H'] = 0, trans['P'] = 1, trans['S'] = 2;
int n, k;
int i,j,p;
scanf("%d%d", &n, &k);
for (i = 1; i <= n; i++) {
char x;
scanf(" %c", &x);
for (j = 0; j <= k; j++) {
for (p = 0; p < 3; p++) {
D[i][j][p] = D[i - 1][j][p];
if (j > 0)D[i][j][p] = max(D[i][j][p],max(max(D[i - 1][j - 1][0], D[i - 1][j - 1][1]), D[i - 1][j - 1][2]));
if (p == trans[x])
D[i][j][p]++;
}
}
}
printf("%d", max(max(D[n][k][0], D[n][k][1]), D[n][k][2]));
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KaW50IERbMTIxMjEyXVsyMV1bM107CmludCB0cmFuc1syNTZdOwppbnQgbWF4KGludCBhLCBpbnQgYikgeyBpZiAoYSA8IGIpcmV0dXJuIGI7IHJldHVybiBhOyB9CmludCBtYWluKCkgewoJdHJhbnNbJ0gnXSA9IDAsIHRyYW5zWydQJ10gPSAxLCB0cmFuc1snUyddID0gMjsKCWludCBuLCBrOwoJaW50IGksaixwOwoJc2NhbmYoIiVkJWQiLCAmbiwgJmspOwoJZm9yIChpID0gMTsgaSA8PSBuOyBpKyspIHsKCQljaGFyIHg7CgkJc2NhbmYoIiAlYyIsICZ4KTsKCQlmb3IgKGogPSAwOyBqIDw9IGs7IGorKykgewoJCQlmb3IgKHAgPSAwOyBwIDwgMzsgcCsrKSB7CgkJCQlEW2ldW2pdW3BdID0gRFtpIC0gMV1bal1bcF07CgkJCQlpZiAoaiA+IDApRFtpXVtqXVtwXSA9IG1heChEW2ldW2pdW3BdLG1heChtYXgoRFtpIC0gMV1baiAtIDFdWzBdLCBEW2kgLSAxXVtqIC0gMV1bMV0pLCBEW2kgLSAxXVtqIC0gMV1bMl0pKTsKCQkJCWlmIChwID09IHRyYW5zW3hdKQoJCQkJCURbaV1bal1bcF0rKzsKCQkJfQoJCX0KCX0KCXByaW50ZigiJWQiLCBtYXgobWF4KERbbl1ba11bMF0sIERbbl1ba11bMV0pLCBEW25dW2tdWzJdKSk7CglyZXR1cm4gMDsKfQ==