#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define INF 1<<30
#define LINF 1LL<<60

/*
 <url:https://joi2014ho.contest.atcoder.jp/img/other/joi2014ho/joi2014ho1.pdf>
 ?????????============================================================
 JOI???????????????JOI???????????£?????¢?????????M(2<=M<=1000)???????¨????N(2<=N<=1000)????????????
 ??¢???????????????????????£?????¢??????J,O,I???????????????????????????1???????????????????????????
 
 ?????±????????????????????\??¬?§??????????JOI ?????¨?????\???JOI ?´??????¨????????????????±????????????????
 JOI ?´????????????£?????¢?????????2 ???????¨????2 ??????????????¢??????????????????
 ?????£?????¢??????J???O???I ???????????????????????????1 ??????????????????????????????
 
 JOI ??????????????????JOI ?´????????????°??¨??????JOI ?????????????????????2 ???????¨?2 ????????????????????????
 ???????????????J???O???I ????????????JOI ?´??????¨(?????¢????£???????????????????) ?????´??????????????????????????°????????¨??§?????????
 ?????¶???????????????2 ???????¨?2 ????????????????£????????????£??????????????????????????\????????°??????????????¨?????????
 
 ?????±????????????????????\??¬?§????????????????JOI ?????¨1 ??????????´?????????£????????????
 ????´????JOI ???????§????????????£?????¢1 ???????????§????????§???J???O???I ??????????\???????1 ??????????????????????????¨?????§?????????
 ?????±????????????????????\??¬?§????????????\??????????????????1 ??????????????????????????°??????JOI ???????????????????????¨????????????
 
 ?????????JOI ??????????????????????????????????????????????????°??????JOI ?????¨?????????????´?????????¨????????????
 ???????´????1 ???????????????????????????JOI ???????????????????????£?????¢????????????????????????????????¨??§??????JOI ????????????1 ??????????????´??????
 ????????´??????JOI ????????°??????JOI ?????¨?????????
 
 ?????±????????????????????\??¬?§????????????°??????JOI ??????????????????JOI ?´????????????°?????§?????????????????????????????¨?????£????????????
 ??????????????°??????JOI ??????????????????JOI ?´????????????°????????§???????±????????????¨????????£??????
 =================================================================
 ?§£??¬=============================================================
 ================================================================
 */
vector<vector<char>> m;
char flag[2][2];
ll Cnt = 0;
ll res = 0;
ll M,N;

ll calc(int y,int x,char c){
    ll cnt1 = 0;
    for(int i = y - 1; i <= y;i++){
        for(int j = x - 1; j<=x;j++){
            bool f = false;
            for(int ii = 0; ii < 2;ii++){
                for(int jj = 0; jj < 2;jj++){
                    if(flag[ii][jj] == m[i + ii][j + jj])continue;
                    f = true; break;
                }
                if(f)break;
            }
            if(f)continue;
            cnt1++;
        }
    }
    char C = m[y][x];
    m[y][x] = c;
    ll cnt2 = 0;
    for(int i = y - 1; i <= y;i++){
        for(int j = x - 1; j<=x;j++){
            bool f = false;
            for(int ii = 0; ii < 2;ii++){
                for(int jj = 0; jj < 2;jj++){
                    if(flag[ii][jj] == m[i + ii][j + jj])continue;
                    f = true; break;
                }
                if(f)break;
            }
            if(f)continue;
            cnt2++;
        }
    }
    m[y][x] = C;
    return cnt2 - cnt1;
}
int main(void) {
    cin.tie(0); ios::sync_with_stdio(false);
    cin >> M >> N;
    m.assign(M+2,vector<char>(N+2,'#'));
    for(int i = 1; i <= M;i++)for(int j = 1; j<=N;j++) cin >> m[i][j];
    for(int i = 0; i < 2;i++)for(int j = 0; j < 2;j++) cin >> flag[i][j];
    for(int i = 1; i < M;i++){
        for(int j = 1; j < N;j++){
            bool f = false;
            for(int ii = 0; ii < 2;ii++){
                for(int jj = 0; jj < 2;jj++){
                    if(flag[ii][jj] == m[i + ii][j + jj])continue;
                    f = true; break;
                }
                if(f)break;
            }
            if(f)continue;
            Cnt++;
        }
    }
    res = Cnt;
    ll tmp = 0;
    for(int i = 1; i <= M;i++){
        for(int j = 1; j <= N;j++){
            tmp = max(tmp,calc(i,j,'J'));
            tmp = max(tmp,calc(i,j,'O'));
            tmp = max(tmp,calc(i,j,'I'));
        }
    }
    
    cout << res + tmp << endl;
    return 0;
}

Measured memory_bytes: 3932