#include <cstdio>
#include <vector>
void p(std::vector<int> const & dp) {
for (auto a : dp) {
printf("%d ", a);
}
printf("\n");
}
int main() {
int l, k, res = 0;
char s[5432];
scanf("%d %d", &l, &k);
scanf("%s", s);
std::vector<int> dp1(l, 0), dp2(l, 0), dp3(l, 0);
for (int len = 1; len <= l; ++len) {
for (int i = 0; i + len - 1 < l; ++i) {
int last = i + len - 1;
if (len == 1) {
dp1[i] = 0;
res += 1;
printf("1: %d %c %d\n", i, s[i], dp1[i]);
}
else if (len == 2) {
if (s[i] == s[last]) {
dp2[i] = 0;
}
else {
dp2[i] = 1;
}
printf("2: %d %c %d\n", i, s[i], dp2[i]);
if (dp2[i] <= k) {
res += 1;
}
}
else {
p(dp1); p(dp2); p(dp3);
printf("%d %c %c %d\n", len, s[i], s[last], dp1[i + 1]);
if (s[i] == s[last]) {
dp3[i] = dp1[i + 1];
}
else {
dp3[i] = 1 + dp1[i + 1];
}
if (dp3[i] <= k) {
res += 1;
}
}
}
if (len >= 3) {
dp1.clear();
dp1 = dp2;
dp2.clear();
dp2 = dp3;
dp3.clear();
}
printf("%d\n", res);
}
printf("%d\n", res);
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPHZlY3Rvcj4KCgp2b2lkIHAoc3RkOjp2ZWN0b3I8aW50PiBjb25zdCAmIGRwKSB7Cglmb3IgKGF1dG8gYSA6IGRwKSB7CgkJcHJpbnRmKCIlZCAiLCBhKTsKCX0KCXByaW50ZigiXG4iKTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbCwgaywgcmVzID0gMDsKICAgIGNoYXIgc1s1NDMyXTsKICAgIAogICAgc2NhbmYoIiVkICVkIiwgJmwsICZrKTsKICAgIHNjYW5mKCIlcyIsIHMpOwogIAogICAgc3RkOjp2ZWN0b3I8aW50PiBkcDEobCwgMCksIGRwMihsLCAwKSwgZHAzKGwsIDApOwogIAogICAgZm9yIChpbnQgbGVuID0gMTsgbGVuIDw9IGw7ICsrbGVuKSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgKyBsZW4gLSAxIDwgbDsgKytpKSB7CiAgICAgICAgICAgIGludCBsYXN0ID0gaSArIGxlbiAtIDE7CiAgICAgICAgICAgIGlmIChsZW4gPT0gMSkgewogICAgICAgICAgICAgICAgZHAxW2ldID0gMDsKICAgICAgICAgICAgICAgIHJlcyArPSAxOwogICAgICAgICAgICAgICAgcHJpbnRmKCIxOiAlZCAlYyAlZFxuIiwgaSwgc1tpXSwgZHAxW2ldKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChsZW4gPT0gMikgewogICAgICAgICAgICAgICAgaWYgKHNbaV0gPT0gc1tsYXN0XSkgewogICAgICAgICAgICAgICAgICAgIGRwMltpXSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBkcDJbaV0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHJpbnRmKCIyOiAlZCAlYyAlZFxuIiwgaSwgc1tpXSwgZHAyW2ldKTsKICAgICAgICAgICAgICAgIGlmIChkcDJbaV0gPD0gaykgewogICAgICAgICAgICAgICAgICAgcmVzICs9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIAlwKGRwMSk7IHAoZHAyKTsgcChkcDMpOwogICAgICAgICAgICAJcHJpbnRmKCIlZCAlYyAlYyAlZFxuIiwgbGVuLCBzW2ldLCBzW2xhc3RdLCBkcDFbaSArIDFdKTsKICAgICAgICAgICAgICAgIGlmIChzW2ldID09IHNbbGFzdF0pIHsKICAgICAgICAgICAgICAgICAgICBkcDNbaV0gPSBkcDFbaSArIDFdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZHAzW2ldID0gMSArIGRwMVtpICsgMV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGRwM1tpXSA8PSBrKSB7CiAgICAgICAgICAgICAgICByZXMgKz0gMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIGlmIChsZW4gPj0gMykgewogICAgICAgIAlkcDEuY2xlYXIoKTsKICAgICAgICAgICAgICBkcDEgPSBkcDI7CiAgICAgICAgICAgICAgZHAyLmNsZWFyKCk7CiAgICAgICAgICAgICAgZHAyID0gZHAzOwogICAgICAgICAgICAgIGRwMy5jbGVhcigpOwogICAgICAgIH0KICAgICAgICBwcmludGYoIiVkXG4iLCByZXMpOwogICAgICAgIAogICAgfQoKICAgIHByaW50ZigiJWRcbiIsIHJlcyk7CgogICAgcmV0dXJuIDA7Cn0KCg==