#include<bits/stdc++.h>
using namespace std;
#define FO(i,a,b) for(int i=a;i<=b;i++)
int an,am,bn,bm,a[55][55],b[55][55],ans,x[55][55];
void solve(int ai,int aj){FO(i,ai,an)FO(j,aj,am)x[i-ai+1][j-aj+1]=a[i][j];}
bool check(int n,int m){FO(i,1,n)FO(j,1,m)if(x[i][j]!=b[i][j])return 0;return 1;}
void solve(int ai,int aj,int bi,int bj){
if(an-ai+1!=bi||am-aj+1!=bj)return;
solve(ai,aj);
if(check(bi,bj))ans=max(ans,bi*bj);
}
void revolve1(){
int aa[55][55];
FO(i,1,an)FO(j,1,am)aa[j][an-i+1]=a[i][j];
swap(an,am);
FO(i,1,an)FO(j,1,am)a[i][j]=aa[i][j];
}
void revolve2(){
int bb[55][55];
FO(i,1,bn)FO(j,1,bm)bb[j][bn-i+1]=b[i][j];
swap(bn,bm);
FO(i,1,bn)FO(j,1,bm)b[i][j]=bb[i][j];
}
signed main(){
cin>>an>>am;
FO(i,1,an)FO(j,1,am)cin>>a[i][j];
cin>>bn>>bm;
FO(i,1,bn)FO(j,1,bm)cin>>b[i][j];
FO(_,0,3){
revolve1();
revolve2();
// FO(__,0,3){
FO(ai,1,an)FO(aj,1,am)FO(bi,1,bn)FO(bj,1,bm)solve(ai,aj,bi,bj);
// }
}
cout<<ans;
return 0;
}
#3 挂了 有人知道#3是啥吗