#include using namespace std; #define rep(i, a, b) for (int i =a; i < (b); ++i) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() #define fo(i, n) rep(i, 0, n) #define F first #define S second #define MP make_pair #define PB push_back typedef long long ll; typedef vector vi; typedef pair pii; typedef vector> vpii; typedef vector> vvi; typedef vector vll; typedef pair pll; typedef vector> vpll; typedef vector> vvll; const int NMAX = 112345; int n,d; ll ina[112345]; ll *in[NMAX]; void ok(ll out) { printf("%lld\n", out); exit(0); } void fail(){ok(-1);} ll dist(ll *a, ll *b) { ll out=0; fo(i,d) out += abs(a[i]-b[i]); return out; } signed main() { scanf("%d%d", &n, &d); fo(i,n) in[i] = ina + d*i; fo(i,n) fo(j, d) scanf("%lld", in[i]+j); if(n<=2) ok(0); int a=0,b=1; for(int i=2; i in[i+1][j]) stoupe=false; } if(!klesa && !stoupe) fail(); ll val=0; fo(i,n) val += abs(in[i][j] - in[n/2][j]); out += val; maxd = max(maxd, val); } printf("%lld\n", 2*(out-maxd)); }