#include<bits/stdc++.h>
using namespace std;
int thing[21][21][2];
int thing2[21];
int thing3[21];
bool machine[21][100001];
int machine2[21];
int x[500];
bool cmp(int abc,int bcd){
return abc>bcd;
}
int main(){
int m,n;
cin>>m>>n;
for(int i=1;i<=m*n;i++){
cin>>x[i];
}
for(int i=1;i<=n;i++){
for(int k=1;k<=m;k++){
cin>>thing[i][k][0];
}
}
for(int i=1;i<=n;i++){
for(int k=1;k<=m;k++){
cin>>thing[i][k][1];
}
}
for(int i=1;i<=m*n;i++){
int a=x[i];
thing2[a]++;
int b=thing2[a];
int c=thing[a][b][0];
int ab=thing[a][b][1];
int d=thing3[a];
bool find=1;
int start;
int sum=0;
for(int i=d+1;i<=100001;i++){
if(machine[c][i]==0){
if(find){
start=i;
sum++;
find=0;
}
else{
sum++;
}
}
else{
find=1;
sum=0;
}
if(sum==ab){
for(int k=start;k<=start+sum-1;k++){
machine[c][i]=1;
}
machine2[c]=max(machine2[c],start+sum-1);
thing3[a]=machine2[c];
break;
}
}
}
sort(machine2+1,machine2+m+1,cmp);
cout<<machine2[1];
return 0;
}