#include <iostream>
#include <queue>
#include <tuple>
#define INF 2100000000
using namespace std;
int N;
int table[101][101];
int ret[101][101];
int dx[4] = { 0, 0, 1, -1 };
int dy[4] = { 1, -1, 0, 0 };
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> N;
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
cin >> table[i][j];
ret[i][j] = INF;
}
}
//최대 - 최소, 최대, 최소, x, y
queue<tuple<int, int, int, int, int>> q;
q.push({ 0, table[1][1], table[1][1], 1, 1 });
ret[1][1] = 1;
while (!q.empty())
{
int sub, maxi, mini, x, y;
tie(sub, maxi, mini, x, y) = q.front();
q.pop();
for (int i = 0; i < 4; i++)
{
int nx = x + dx[i];
int ny = y + dy[i];
int nmaxi = max(maxi, table[nx][ny]);
int nmini = min(mini, table[nx][ny]);
int nsub = nmaxi - nmini;
if (nx < 1 || ny < 1 || nx > N || ny > N) continue;
if (ret[nx][ny] > nsub)
{
ret[nx][ny] = nsub;
q.push({ nsub, nmaxi, nmini, nx, ny });
}
}
}
cout << ret[N][N] << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDx0dXBsZT4KI2RlZmluZSBJTkYgMjEwMDAwMDAwMAp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IE47CmludCB0YWJsZVsxMDFdWzEwMV07CmludCByZXRbMTAxXVsxMDFdOwppbnQgZHhbNF0gPSB7IDAsIDAsIDEsIC0xIH07CmludCBkeVs0XSA9IHsgMSwgLTEsIDAsIDAgfTsKCmludCBtYWluKHZvaWQpCnsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CgljaW4udGllKDApOwoJY291dC50aWUoMCk7CgkKCWNpbiA+PiBOOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gTjsgaSsrKQoJewoJCWZvciAoaW50IGogPSAxOyBqIDw9IE47IGorKykKCQl7CgkJCWNpbiA+PiB0YWJsZVtpXVtqXTsKCQkJcmV0W2ldW2pdID0gSU5GOwoJCX0KCX0KCgkvL+y1nOuMgCAtIOy1nOyGjCwg7LWc64yALCDstZzshowsIHgsIHkKCXF1ZXVlPHR1cGxlPGludCwgaW50LCBpbnQsIGludCwgaW50Pj4gcTsKCXEucHVzaCh7IDAsIHRhYmxlWzFdWzFdLCB0YWJsZVsxXVsxXSwgMSwgMSB9KTsKCXJldFsxXVsxXSA9IDE7CgkKCXdoaWxlICghcS5lbXB0eSgpKQoJewoJCWludCBzdWIsIG1heGksIG1pbmksIHgsIHk7CgkJdGllKHN1YiwgbWF4aSwgbWluaSwgeCwgeSkgPSBxLmZyb250KCk7CgkJcS5wb3AoKTsKCgkJZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCgkJewoJCQlpbnQgbnggPSB4ICsgZHhbaV07CgkJCWludCBueSA9IHkgKyBkeVtpXTsKCQkJaW50IG5tYXhpID0gbWF4KG1heGksIHRhYmxlW254XVtueV0pOwoJCQlpbnQgbm1pbmkgPSBtaW4obWluaSwgdGFibGVbbnhdW255XSk7CgkJCWludCBuc3ViID0gbm1heGkgLSBubWluaTsKCgkJCWlmIChueCA8IDEgfHwgbnkgPCAxIHx8IG54ID4gTiB8fCBueSA+IE4pIGNvbnRpbnVlOwoJCQlpZiAocmV0W254XVtueV0gPiBuc3ViKQoJCQl7CgkJCQlyZXRbbnhdW255XSA9IG5zdWI7CgkJCQlxLnB1c2goeyBuc3ViLCBubWF4aSwgbm1pbmksIG54LCBueSB9KTsKCQkJfQoKCQl9Cgl9Cgljb3V0IDw8IHJldFtOXVtOXSA8PCBlbmRsOwoKfQoK