#include<iostream>
#include<string>
#include<algorithm>    
#include<cmath>
#include<map>
#include<vector>
#include<math.h>
#include<stdio.h>
#include<stack>
#include<queue>
#include<tuple>
#include<cassert>
#include<set>
#define int long long
using namespace std;
const int INF = 1000000000000;
const int mod = 1000000007;
string s[345678];
signed main() {
	int n, m, huu = 0, sum = 0, ans = 0; string a, b; cin >> n >> m;
	for (int h = 0; h < n; h++) {
		cin >> s[h];
	}
	cin >> a >> b;
	//変えない
	for (int h = 0; h < n - 1; h++) {
		for (int i = 0; i < m - 1; i++) {
			if (s[h][i] == a[0] && s[h][i + 1] == a[1]) {
				if (s[h + 1][i] == b[0] && s[h + 1][i + 1] == b[1]) {
					huu++;
				}
			}
		}
	}
	ans = max(ans, huu);
	//変える
	for (int x = 0; x < n; x++) {
		for (int y = 0; y < m; y++) {
			char z; sum = huu; z = 'J';
			for (int h = x - 1; h <= x; h++) {
				for (int i = y - 1; i <= y; i++) {
					if (0 <= h && h < n - 1 && 0 <= i && i < m - 1) {
						if (s[h][i] == a[0] && s[h][i + 1] == a[1]) {
							if (s[h + 1][i] == b[0] && s[h + 1][i + 1] == b[1]) {
								sum--;
							}
						}
						if ((h == x && i == y && z == a[0]) || ((h != x || i != y) && s[h][i] == a[0])) {
							if ((h == x && i + 1 == y && z == a[1]) || ((h != x || i + 1 != y) && s[h][i + 1] == a[1])) {
								if ((h + 1 == x && i == y && z == b[0]) || ((h + 1 != x || i != y) && s[h + 1][i] == b[0])) {
									if ((h + 1 == x && i + 1 == y && z == b[1]) || ((h + 1 != x || i + 1 != y) && s[h + 1][i + 1] == b[1])) {
										sum++;
									}
								}
							}
						}
					}
				}
			}
			ans = max(ans, sum); sum = huu; z = 'I';
			for (int h = x - 1; h <= x; h++) {
				for (int i = y - 1; i <= y; i++) {
					if (0 <= h && h < n - 1 && 0 <= i && i < m - 1) {
						if (s[h][i] == a[0] && s[h][i + 1] == a[1]) {
							if (s[h + 1][i] == b[0] && s[h + 1][i + 1] == b[1]) {
								sum--;
							}
						}
						if ((h == x && i == y && z == a[0]) || ((h != x || i != y) && s[h][i] == a[0])) {
							if ((h == x && i + 1 == y && z == a[1]) || ((h != x || i + 1 != y) && s[h][i + 1] == a[1])) {
								if ((h + 1 == x && i == y && z == b[0]) || ((h + 1 != x || i != y) && s[h + 1][i] == b[0])) {
									if ((h + 1 == x && i + 1 == y && z == b[1]) || ((h + 1 != x || i + 1 != y) && s[h + 1][i + 1] == b[1])) {
										sum++;
									}
								}
							}
						}
					}
				}
			}
			ans = max(ans, sum); sum = huu; z = 'O';
			for (int h = x - 1; h <= x; h++) {
				for (int i = y - 1; i <= y; i++) {
					if (0 <= h && h < n - 1 && 0 <= i && i < m - 1) {
						if (s[h][i] == a[0] && s[h][i + 1] == a[1]) {
							if (s[h + 1][i] == b[0] && s[h + 1][i + 1] == b[1]) {
								sum--;
							}
						}
						if ((h == x && i == y && z == a[0]) || ((h != x || i != y) && s[h][i] == a[0])) {
							if ((h == x && i + 1 == y && z == a[1]) || ((h != x || i + 1 != y) && s[h][i + 1] == a[1])) {
								if ((h + 1 == x && i == y && z == b[0]) || ((h + 1 != x || i != y) && s[h + 1][i] == b[0])) {
									if ((h + 1 == x && i + 1 == y && z == b[1]) || ((h + 1 != x || i + 1 != y) && s[h + 1][i + 1] == b[1])) {
										sum++;
									}
								}
							}
						}
					}
				}
			}
			ans = max(ans, sum);
		}
	}
	cout << ans << endl;
	return 0;
}



Measured memory_bytes: 6856