#include <bits/stdc++.h>
using namespace std;
int dp[300][300][300];
char Ss[1000], St[1000];
void update(int &x, int y) {
  if (x < y) x = y;
}
int main() {
  int n, T;
  scanf("%d%d", &n, &T);
  scanf("%s", Ss);
  scanf("%s", St);
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= T; j++)
      for (int k = 0; k <= n; k++) dp[i][j][k] = -1;
  dp[0][0][0] = 0;
  if (St[0] == St[1]) {
    for (int i = 0; i < n; i++)
      for (int j = 0; j <= T; j++)
        for (int k = 0; k <= n; k++) {
          if (dp[i][j][k] < 0) continue;
          if (Ss[i] == St[0]) {
            update(dp[i + 1][j][k + 1], dp[i][j][k] + k);
            update(dp[i + 1][j + 1][k], dp[i][j][k]);
          } else {
            update(dp[i + 1][j][k], dp[i][j][k]);
            update(dp[i + 1][j + 1][k + 1], dp[i][j][k] + k);
          }
        }
  } else {
    for (int i = 0; i < n; i++)
      for (int j = 0; j <= T; j++)
        for (int k = 0; k <= n; k++) {
          if (dp[i][j][k] < 0) continue;
          if (Ss[i] == St[0]) {
            update(dp[i + 1][j][k + 1], dp[i][j][k]);
            update(dp[i + 1][j + 1][k], dp[i][j][k] + k);
          }
          if (Ss[i] == St[1]) {
            update(dp[i + 1][j][k], dp[i][j][k] + k);
            update(dp[i + 1][j + 1][k + 1], dp[i][j][k]);
          } else {
            update(dp[i + 1][j][k], dp[i][j][k]);
            update(dp[i + 1][j + 1][k], dp[i][j][k] + k);
            update(dp[i + 1][j + 1][k + 1], dp[i][j][k]);
          }
        }
  }
  int ans = 0;
  for (int i = 0; i <= T; i++)
    for (int j = 0; j <= n; j++) {
      ans = max(ans, dp[n][i][j]);
    }
  printf("%d\n", ans);
  return 0;
}
