#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e15;
long long binpow(long long a, long long b) {
  long long res = 1;
  while (b > 0) {
    if (b & 1) {
      res = res * a;
    }
    a = a * a;
    b >>= 1;
  }
  return res;
}
long long dp[205][205][205];
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long T;
  T = 1;
  while (T--) {
    long long n, k;
    string s, t;
    cin >> n >> k;
    cin >> s >> t;
    memset(dp, -1, sizeof(dp));
    dp[0][0][0] = 0;
    long long i, j;
    for (i = 0; i < n; i++) {
      for (j = 0; j <= k; j++) {
        for (long long f0 = 0; f0 <= n; f0++) {
          if (dp[i][j][f0] == -1) {
            continue;
          }
          long long e0 = s[i] == t[0];
          long long e1 = s[i] == t[1];
          long long e01 = t[0] == t[1];
          dp[i + 1][j][f0 + e0] =
              max(dp[i + 1][j][f0 + e0], dp[i][j][f0] + (e1 ? f0 : 0));
          if (j + 1 <= k)
            dp[i + 1][j + 1][f0 + 1] =
                max(dp[i + 1][j + 1][f0 + 1], dp[i][j][f0] + (e01 ? f0 : 0));
          if (j + 1 <= k)
            dp[i + 1][j + 1][f0 + e01] =
                max(dp[i + 1][j + 1][f0 + e01], dp[i][j][f0] + f0);
        }
      }
    }
    long long ans = 0;
    for (j = 0; j <= k; j++) {
      for (long long f0 = 0; f0 <= n; f0++) {
        ans = max(ans, dp[n][j][f0]);
      }
    }
    cout << ans << "\n";
  }
}
