#!/usr/local/bin/rdmd
import std.stream;
import std.cstream;
import std.algorithm;

int R,C;
bool[10000][10] MAP;
void main(){
  while(true){
    din.readf(&R,&C);
    if(R==0&&C==0)break;
    for(int i=0;i<R;i++){
      for(int j=0;j<C;j++){
        int t;
        din.readf(&t);
        MAP[i][j]=(t==1);
      }
    }
    int ans=0;
    for(int i=0;i<(1<<R);i++){ // 全ての横の列の反転を試す
      int tmpans=0;
      for(int j=0;j<C;j++){
        int count=0;
        for(int k=0;k<R;k++){
          if(MAP[k][j]^((i>>k)&1))count++;
        }
        tmpans+=max(count,R-count);
      }
      ans=max(ans,tmpans);
    }
    dout.writefln(ans);
  }
}