#include <bits/stdc++.h>
using namespace std;
const int N=1005;
int n,m,ans,mx;
char a[N][N],b[5][5];
bool check(int i,int j){
if(i+1>n || j+1>m) return false;
if(a[i][j]==b[1][1] && a[i+1][j]==b[2][1] && a[i][j+1]==b[1][2] && a[i+1][j+1]==b[2][2]) return true;
else return false;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin >> a[i][j];
for(int i=1;i<=2;i++) for(int j=1;j<=2;j++) cin >> b[i][j];
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(check(i,j)) ans++;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
char tmp1=a[i][j];
for(char c:{'J','O','I'}){
if(c==tmp1) continue;
int sum=0;
for(int y=i-1;y<=i;y++){
for(int x=j-1;x<=j;x++){
bool b1=check(y,x);
a[i][j]=c;
bool b2=check(y,x);
if(!b1 && b2) sum++;
else if(b1 && !b2) sum--;
a[i][j]=tmp1;
}
}
mx=max(mx,sum);
}
}
}
cout << ans+mx;
}