#include <bits/stdc++.h>
using namespace std;
//Поворот на 90 градусів
vector<vector<int>> rotate(vector<vector<int>> a, int n, int m)
{
vector<vector<int>> res(m);
for(int i = 0; i < m; i++)
{
res[i].resize(n);
for(int j = 0; j < n; j++)
{
res[i][j] = a[j][m - 1 - i];
}
}
return res;
}
int main()
{
int n, m;
cin >> n >> m;
vector<vector<int>> a(n), ans(n);
for(int i = 0; i < n; i++)
{
a[i].resize(m);
ans[i].resize(m);
for(int j = 0; j < m; j++)
cin >> a[i][j];
}
for(int rotation = 0; rotation < 4; rotation++)
{
vector<vector<int>> mx(n);
for(int i = 0; i < n; i++)
{
mx[i].resize(m);
}
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
mx[i][j] = a[i][j] + i + j;
if(i != 0)
mx[i][j] = max(mx[i][j], mx[i - 1][j]);
if(j != 0)
mx[i][j] = max(mx[i][j], mx[i][j - 1]);
ans[i][j] = max(ans[i][j], mx[i][j] - i - j);
}
}
a = rotate(a, n, m);
ans = rotate(ans, n, m);
swap(n, m);
}
int mn = ans[0][0];
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
mn = min(mn, ans[i][j]);
}
}
cout << mn << "\n";
return 0;
}