#include <bits/stdc++.h>
using namespace std;

int N,M,A[1505][1505],B[1505][1505],BR,br,maks,X;

void napraviB(){
    for(int i = 1;i<=N;i++){
        for(int j = 1;j<=M;j++){
            B[i][j]=A[i][j];
        }
    }
}
bool povoljno(int b){
    if(b^X < b){
        return true;
    }
    else{
        return false;
    }
}
int main(){
    cin>>N>>M;
    maks=-1;
    for(int i = 1;i<=N;i++){
        for(int j = 1;j<=M;j++){
        scanf("%d",&A[i][j]);
            BR+=A[i][j];
            maks=max(maks,A[i][j]);
        }
    }
    if(maks==0){
        cout<<0<<endl;
        return 0;
    }
    else if(BR==1 || maks==1){
        cout<<1<<endl;
        return 0;
    }
    else{
        for(int i = 1;i<=N;i++){
                br=0;
            for(int j = 1;j<=M;j++){
                napraviB();
                X=B[i][j];
                if(povoljno(B[i][j])){
                    B[i][j]=B[i][j]^X;
                }
                for(int i = 1;i<=N;i++){
                    for(int j = 1;j<=M;j++){
                        br+=B[i][j];
                    }
                }
            }
                BR=min(BR,br);
        }
        cout<<BR<<endl;
    }
    return 0;
}