#include <bits/stdc++.h>
using namespace std;

int main() {
  int N, M;
  cin >> N >> M;
  vector<int> A(N), B(M);
  for (int i = 0; i < N; i++) cin >> A.at(i);
  for (int i = 0; i < M; i++) cin >> B.at(i);
  
  vector<vector<int>> DP(N + 1, vector<int>(M + 1));
  for (int i = 0; i <= N; i++) {
    for (int j = 0; j <= M; j++) {
      if (i == 0 || j == 0) DP.at(i).at(j) = i + j;
      else if (A.at(i - 1) == B.at(j - 1)) {
        DP.at(i).at(j) = min(min(DP.at(i - 1).at(j) + 1,
                                 DP.at(i).at(j - 1) + 1),
                             DP.at(i - 1).at(j - 1));
      }
      else {
        DP.at(i).at(j) = min(min(DP.at(i - 1).at(j) + 1,
                                 DP.at(i).at(j - 1) + 1),
                             DP.at(i - 1).at(j - 1) + 1);
      }
    }
  }
  
  cout << DP.at(N).at(M) << endl;
}
#include<bits/stdc++.h> 
using namespace std; 
 
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL);
#define lli long long int
#define ld long double
#define pb push_back
#define pf push_front
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define pll pair<lli,lli>
#define ve vector<lli>
#define vep vector<pair<lli,lli> >
#define fr(i,a,n) for(lli i=a;i<(n);i++)
#define frj(j,a,n) for(lli j=a;j<(n);j++)
#define frx(i,a,n) for(lli i=a;i>(n);i--)
#define frxj(j,a,n) for(lli j=a;j>(n);j--)
#define lb lower_bound
#define ub upper_bound
#define F first
#define S second
#define db(x) cout << "[ " << x << " ]" << endl
#define db2(x,y) cout<<x<<" "<<y<<endl
#define dbarr(arr,a,n) fr(i,a,n) cout<<arr[i]<<" "; cout<<endl
#define yes cout<<"Yes"<<endl
#define no cout<<"No"<<endl

lli dp[1005][1005],a[1005],b[1005];

lli edit(lli i,lli j){
    if(i==0)return j;
    if(j==0)return i;
    if(dp[i][j]!=-1)return dp[i][j];
    if(a[i]==b[j]){
        dp[i][j]=edit(i-1,j-1);
    }
    else{
        dp[i][j]=1+min(edit(i-1,j-1),min(edit(i-1,j),edit(i,j-1)));
    }
    return dp[i][j];
}

void solve(){
    memset(dp,-1,sizeof(dp));
    lli n,m;
    cin>>n>>m;
    fr(i,1,n+1)cin>>a[i];
    fr(i,1,m+1)cin>>b[i];
    cout<<edit(n,m);
}

int main(){
    fast;
    lli t=1;
    // cin>>t;
    while(t--){
        solve();
    }
}
