import std.stdio, std.conv, std.string, std.array, std.range, std.algorithm, std.container;
import std.math, std.random, std.bigint, std.datetime, std.format;
void main(string[] args){ if(args.length > 1) if(args[1] == "-debug") DEBUG = 1; solve(); }
void log()(){ writeln(""); } void log(T, A ...)(T t, lazy A a){ if(DEBUG) write(t, " "), log(a); } bool DEBUG = 0; 
string rstring(){ static string[] ss; while(!ss.length) ss = readln.chomp.split; string res = ss[0]; ss.popFront; return res; }
T rtype(T)(){ return rstring.to!T; } alias rint = rtype!int, rlong = rtype!long, rreal = rtype!real;
T[] rtypes(T)(int n){ return n.iota.map!(i => rtype!T()).array; } alias rint = rtypes!int, rlong = rtypes!long, rreal = rtypes!real;
T[][] rtypess(T)(int n, int m){ return n.iota.map!(i => rtypes!T(m)).array; } alias rint = rtypess!int, rlong = rtypess!long, rreal = rtypess!real;
T chmin(T)(ref T x, T y){ if(x > y) x = y; return x; } T chmax(T)(ref T x, T y){ if(x < y) x = y; return x; }

// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- //

void solve(){
	int h = rint, w = rint;
	int[][] as = new int[][](h, w);
	foreach(i; 0 .. h){
		int[] q = rint(w);
		foreach(j; 0 .. w) as[i][j] += q[j];
	}
	foreach(i; 0 .. h){
		int[] q = rint(w);
		foreach(j; 0 .. w){
			as[i][j] -= q[j];
			if(as[i][j] < 0) as[i][j] *= -1;
		}
	}
	int sum = 80 * (h + w - 1);
	log("as:", as);

	bool[][][] xz = new bool[][][](h, w, sum + 1);
	foreach(i; 0 .. h) foreach(j; 0 .. w){
		int a = as[i][j];
		if(i == 0 && j == 0) xz[i][j][a] = 1;
		if(i > 0)foreach(r; 0 .. sum) if(xz[i - 1][j][r]){
			if(r + a <= sum) xz[i][j][r + a] = 1;
			if(r >= a && r - a <= sum) xz[i][j][r - a] = 1;
			if(r < a && a - r <= sum) xz[i][j][a - r] = 1;
		}
		if(j > 0)foreach(r; 0 .. sum) if(xz[i][j - 1][r]){
			if(r + a <= sum) xz[i][j][r + a] = 1;
			if(r >= a && r - a <= sum) xz[i][j][r - a] = 1;
			if(r < a && a - r <= sum) xz[i][j][a - r] = 1;
		}
		//log("i:", i, "j:", j, "ws:", xz[i][j]);
	}

	foreach(r; 0 .. sum + 1){
		if(xz[h - 1][w - 1][r]){
			r.writeln;
			break;
		}
	}
}