#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve(){
int n,m;
cin>>n>>m;
int a[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
}
}
int dp[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
dp[i][j]=2147483647;
}
}
dp[0][0]=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(j!=0)dp[i][j]=min(dp[i][j],dp[i][j-1]+1+(a[i][j]!=a[i][j-1]));
if(i!=0)dp[i][j]=min(dp[i][j],dp[i-1][j]+1+(a[i][j]!=a[i-1][j]));
}
}
for(int i=0;i<n;i++){
for(int j=m-1;j>=0;j--){
if(j!=m-1)dp[i][j]=min(dp[i][j],dp[i][j+1]+1+(a[i][j]!=a[i][j+1]));
if(i!=0)dp[i][j]=min(dp[i][j],dp[i-1][j]+1+(a[i][j]!=a[i-1][j]));
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(j!=0)dp[i][j]=min(dp[i][j],dp[i][j-1]+1+(a[i][j]!=a[i][j-1]));
if(i!=0)dp[i][j]=min(dp[i][j],dp[i-1][j]+1+(a[i][j]!=a[i-1][j]));
}
}
cout<<dp[n-1][m-1];
return;
}
signed main(){
int t=1;
//cin>>t;
while(t--){
solve();
}
return 0;
}