#include <bits/stdc++.h>
using namespace std;
const long long N = 2e2 + 5, K = 20, mod = 1000000007, MOD = 1000000007,
                INF = LLONG_MAX / 2;
void solve() {
  long long n, k;
  cin >> n >> k;
  string s, t;
  cin >> s >> t;
  vector<vector<vector<long long>>> dp(
      N, vector<vector<long long>>(N, vector<long long>(N, -1)));
  dp[0][0][0] = 0;
  long long ans = 0;
  for (long long i = 0; i < n; i++) {
    for (long long j = 0; j <= k; j++) {
      for (long long z = 0; z <= n; z++) {
        if (dp[i][j][z] == -1) continue;
        long long f0 = (s[i] == t[0]), f1 = (s[i] == t[1]),
                  f01 = (t[0] == t[1]);
        dp[i + 1][j][z + f0] =
            max(dp[i + 1][j][z + f0], dp[i][j][z] + (f1 ? z : 0));
        dp[i + 1][j + 1][z + 1] =
            max(dp[i + 1][j + 1][z + 1], dp[i][j][z] + (f01 ? z : 0));
        dp[i + 1][j + 1][z + f01] =
            max(dp[i + 1][j + 1][z + f01], dp[i][j][z] + z);
      }
    }
  }
  for (long long j = 0; j <= k; j++) {
    for (long long z = 0; z <= n; z++) {
      ans = max(ans, dp[n][j][z]);
    }
  }
  cout << ans << endl;
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  long long TESTS = 1;
  while (TESTS--) {
    solve();
  }
  return 0;
}
