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

int table[80][80];
bool dp[80][80][15000]={};

int main(){
  int H, W;
  cin >> H >> W;
  for(int i=0; i<H; i++){
    for(int j=0; j<W; j++){
      cin >> table[i][j];
    }
  }
  int m=0;
  for(int i=0; i<H; i++){
    for(int j=0; j<W; j++){
      int b; cin >> b;
      table[i][j]=abs(table[i][j]-b);
      m=max(m, table[i][j]);
    }
  }
  dp[0][0][table[0][0]]=true;
  for(int i=0; i<H; i++){
    for(int j=0; j<W; j++){
      for(int k=0; k<=(H+W)*m; k++){
        if(dp[i][j][k]){
          if(j<W-1){
            dp[i][j+1][k+table[i][j+1]]=true;
            dp[i][j+1][abs(k-table[i][j+1])]=true;
          }
          if(i<H-1){
            dp[i+1][j][k+table[i+1][j]]=true;
            dp[i+1][j][abs(k-table[i+1][j])]=true;
          }
        }
      }
    }
  }
  for(int k=0; k<=(H+W)*m; k++){
    if(dp[H-1][W-1][k]){
      cout << k << endl;
      break;
    }
  }
  return 0;
}