#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const double eps = 1e-10;
const long long mod = 1e9 + 7;
const int N = 1e5 + 5;
int f[205][205][205], g[205][205];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr), cout.tie(nullptr);
  ;
  int n, tim, ans = 0;
  string s, t;
  cin >> n >> tim >> s >> t;
  int sum0 = 0, sum1 = 0;
  if (t[0] == t[1]) {
    memset(g, 0x80, sizeof(g));
    g[0][0] = 0;
    for (int i = 1; i <= n; ++i) {
      for (int j = 0; j <= min(tim, i); ++j) {
        int &now = g[i][j];
        now = g[i - 1][j] + (s[i - 1] == t[1]) * (sum0 + j);
        if (s[i - 1] == t[1]) {
          ans = max(now, ans);
          continue;
        } else
          now = max(now, j ? g[i - 1][j - 1] + (sum0 + j - 1) : 0);
        ans = max(now, ans);
      }
      if (s[i - 1] == t[1]) ++sum0;
    }
  } else {
    memset(f, 0x80, sizeof(f));
    f[0][0][0] = 0;
    for (int i = 1; i <= n; ++i) {
      for (int a = 0; a <= i; ++a) {
        for (int k = 0; k <= min(i, tim); ++k) {
          int &now = f[i][a][k];
          if (s[i - 1] == t[0])
            now = max(a ? f[i - 1][a - 1][k] : -inf,
                      k ? f[i - 1][a][k - 1] + a : -inf);
          else if (s[i - 1] == t[1])
            now =
                max(f[i - 1][a][k] + a, a && k ? f[i - 1][a - 1][k - 1] : -inf);
          else
            now = max({f[i - 1][a][k], a && k ? f[i - 1][a - 1][k - 1] : -inf,
                       k ? f[i - 1][a][k - 1] + a : -inf});
          ans = max(ans, now);
        }
      }
    }
  }
  cout << ans << endl;
}
