local h, w = io.read("*n", "*n")
local a = {}
for i = 1, h do
  for j = 1, w do
    a[(i - 1) * w + j] = io.read("*n")
  end
end
for i = 1, h do
  for j = 1, w do
    local idx = (i - 1) * w + j
    a[idx] = a[idx] - io.read("*n")
  end
end
-- top
local map = {}
for i = 1, h * w do map[i] = {} end
map[1][a[1]], map[1][-a[1]] = true, true
for j = 2, w do
  local av = a[j]
  for v, _u in pairs(map[j - 1]) do
    map[j][v + av], map[j][v - av] = true, true
  end
end
-- rem
for i = 2, h do
  -- left
  do
    local idx = (i - 1) * w + 1
    local av = a[idx]
    for v, _u in pairs(map[idx - w]) do
      map[idx][v + av], map[idx][v - av] = true, true
    end
  end
  -- rem
  for j = 2, w do
    local idx = (i - 1) * w + j
    local av = a[idx]
    for v, _u in pairs(map[idx - w]) do
      map[idx][v + av], map[idx][v - av] = true, true
    end
    for v, _u in pairs(map[idx - 1]) do
      map[idx][v + av], map[idx][v - av] = true, true
    end
  end
end
local ret = 1000000007
local mab = math.abs
for v, _u in pairs(map[h * w]) do
  if mab(v) < ret then ret = mab(v) end
end
print(ret)
