#include using namespace std; using ll = int64_t; using ull = uint64_t; int n, d; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> d; vector> crs(n, vector(d)); for(int i = 0; i < n; ++i) { for(int j = 0; j < d; ++j) { cin >> crs[i][j]; } } int far = 0; ll fdt = 0; for(int i = 0; i < n; ++i) { ll dt = 0; for(int j = 0; j < d; ++j) { dt += abs(crs[0][j] - crs[i][j]); } if(dt > fdt) { fdt = dt; far = i; } } vector fc = crs[far]; sort(begin(crs), end(crs), [&](vector& a, vector& b) { ll ad = 0; for(int i = 0; i < d; ++i) { ad += abs(a[i] - fc[i]); } ll bd = 0; for(int i = 0; i < d; ++i) { bd += abs(b[i] - fc[i]); } return ad < bd; }); //for(int i = 0; i < n; ++i) { // for(int j = 0; j < d; ++j) { // cout << crs[i][j] << ' '; // } // cout << '\n' << flush; //} for(int u = 0; u < n-2; ++u) { int v = u+1; int w = u+2; for(int j = 0; j < d; ++j) { ll duw = abs(crs[u][j] - crs[w][j]); ll duv = abs(crs[u][j] - crs[v][j]); ll dvw = abs(crs[v][j] - crs[w][j]); if(duw < duv + dvw) { cout << "-1" << '\n'; return 0; } } } vector med(d); for(int i = 0; i < d; ++i) { vector cs(n); for(int j = 0; j < n; ++j) { cs[j] = crs[j][i]; } sort(cs.begin(), cs.end()); med[i] = cs[n/2]; } ll td = 0; for(int i = 0; i < d; ++i) { for(int j = 0; j < n; ++j) { td += abs(med[i] - crs[j][i]); } } cerr << "td " << td << '\n'; ll bst = td; for(int i = 0; i < d; ++i) { ll x = td; for(int j = 0; j < n; ++j) { x -= abs(med[i] - crs[j][i]); } bst = min(bst, x); } cout << 2*bst << '\n'; return 0; }