#include #include #include #define nMax 50001 #define mMax 26 #define INF 2000000000000000 using namespace std; //ifstream cin("000.in"); int n, m; long long dpUp[nMax], dpDown[nMax], Sol; int mat[nMax][mMax], newMat[nMax][mMax], height[nMax], nrSol, v[nMax]; int abs(int nr) { if(nr<0) return -nr; return nr; } bool cmp(const int &a, const int &b) { for(int i=1; i<=m; i++) { if(mat[a][i]mat[b][i]) return 0; } return 1;; } int main() { cin>>n>>m; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) cin>>mat[i][j]; v[i]=i; } sort(v+1, v+n+1, cmp); for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) newMat[i][j]=mat[v[i]][j]; for(int j=1; j<=m; j++) { for(int i=1; i<=n; i++) v[i]=newMat[i][j]; sort(v+1, v+n+1); v[0]=v[1], v[n+1]=v[n]; long long nrMom=0; for(int i=1; i<=n; i++) { dpUp[i]=dpUp[i-1]+1ll*(v[i]-v[i-1])*nrMom; nrMom++; } nrMom=0; for(int i=n; i>=1; i--) { dpDown[i]=dpDown[i+1]+1ll*(v[i+1]-v[i])*nrMom; nrMom++; } long long minDist=INF; for(int i=1; i<=n; i++) { if(dpUp[i]+dpDown[i]