#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main(){
int i,j,m,n,ans=0,l;
static int r[2001][2001][2]={0};
char s[4001],t[4001];
scanf("%d%d",&m,&n);
scanf("%s",s);
scanf("%s",t);
for(i=0;i<=m;i++){
for(j=0;j<=n;j++){
for(l=0;l<2;l++){
if(l==0){
if(s[i]=='I')
r[i+1][j][1]=max(r[i+1][j][1],r[i][j][0]+1);
if(t[j]=='I')
r[i][j+1][1]=max(r[i][j+1][1],r[i][j][0]+1);
}
else{
if(s[i]=='O'&&r[i][j][1]!=0)
r[i+1][j][0]=max(r[i+1][j][0],r[i][j][1]+1);
if(t[j]=='O'&&r[i][j][1]!=0)
r[i][j+1][0]=max(r[i][j+1][0],r[i][j][1]+1);
}
}
}
}
for(i=0;i<=m;i++){
for(j=0;j<=n;j++){
ans=max(ans,r[i][j][1]);
}
}
printf("%d\n",ans);
return 0;
}

