import java.util.Scanner;

/**
 * 
 * @author DemonSong
 * 
 *         0525. Oscenbei
 * 
 *         ??????????????? ??????
 *         IOI?£??????§??????????\???\??\????????±????£??????§????????????????????????????????????????????????????????±????£??????????????????§??????????????¨??´??????????????¨??´??????????????¨?£?????????????????????§?????????????£???´???????????¨??????????????§????????????????????±???????????????????????????????¢°??§????????????????????????????¢°??????
 *         R (1 ??? R ??? 10) ???, ?¨? C (1 ??? C ??? 10000)
 *         ??????????????¢??¶??????????????????????????????????????????????????¢??§?????¨??´??????????????????????????????????£????????£???´????????????
 * 
 *         ????????\?????????????????????????????¨?????????????£?????????´????????°?????????????????????????????????????£??????£???????????£????????????????????¨??????????????¶???????????????????????§?????£?????????????????\?????¨??´???????????¨????\???\??\????????±??§?????????????????????????????????????¶??????????????????????????????¨??´??????????????????????????¨??????????????§??????????????????????????§?????\?????§????¢°???????????\??¢?????????????????´?????????????£??????£????????????????????????????£????????????¨???????????????????¢°???????¨?????????????????????????????£????????????????????????????????????????????£????????????????????????¨?????§??????????????????????????¨??????????????????????????¨?£????????????¨?????§????????????
 * 
 *         ?£?????????????????????????????????¨?????°?????§?£???????????????£??????????????¨??´??????????????????????????¨??????????????§????????????????????§????¨????????????????????????????????£?????????????????¶?????????????????????????????????????????£???????????????¨??´??????????????????????????¢??????????????¨?????§??????????????????????????????????????§???????????????????????°????????????????????????????????¨?????????????¨????????????????????£?????????????????????????????????????????????????????£???????????????´????????????????????¨????????????????????§????????????????????°????????§??????????????????????????°???????????????????????????
 * 
 *         ??°????????´???????????????????¬?????????????????????¶???????????£?????¨???????????????????????¨??´??????????????¶??????????????????????£???´??????????????¶????????¨???????????????
 * 
 * 
 *         1??????????£?????????¨?¬?????????????????????¶???????????????
 * 
 * 
 *         ???????????? 1????????¨5??????????£?????????¨?¬?????????????????????¶???????????????????????¶?????§??????????????§???????????????9?????§?????????
 * 
 * 
 *         ????????? R ????????? 10 ??? C ????????? 10000 ?????????????°????????????¨?????¨????????????
 * 
 *         ??\??? ??\???????????°??????????????????????????????????????????????????????????????\????????¢?????§??????????????????
 * 
 *         ??\??????1????????????2????????´??° R, C (1 ??? R ??? 10, 1 ??? C ??? 10 000) ???????????????????????¨????????????????????????????¶???? R
 *         ????????°?????´?????????????????¶????????¨?????? (i+1) ?????? (1 ??? i ??? R) ????????? C ????????´??° ai,1, ai,2, ??????, ai,C
 *         ???????????????????????¨??????????????????????????? ai,j ??? i ??? j ??? ??????????????¶????????¨????????????. ai,j ??? 1 ????????¨??´?????????????????¨??????
 *         0 ???????£???´?????????????????¨?????¨??????
 * 
 *         C, R ?????¨?????? 0 ?????¨?????\?????????????????????. ???????????????????????°??? 5 ????¶?????????????
 * 
 *         ?????? ???????????????????????¨??????????????§????????????????????§?????°???1?????????????????????
 * 
 *         ??\????????? ??\?????? 2 5 0 1 0 1 0 1 0 0 0 1 3 6 1 0 0 0 1 0 1 1 1 0 1 0 1 0 1 1
 *         0 1 0 0 ????????? 9 15
 *
 */
public class Main{
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		while (true) {
			int row = in.nextInt();
			int col = in.nextInt();
			if (row == 0 && col == 0)
				break;

			int[][] grid = new int[row][col];
			for (int i = 0; i < row; i++) {
				for (int j = 0; j < col; j++) {
					grid[i][j] = in.nextInt();
				}
			}
			System.out.println(solve(grid));
		}
		in.close();
	}

	private static void flip(int[][] grid, int row) {
		for (int i = 0; i < grid[0].length; i++) {
			grid[row][i] = grid[row][i] == 1 ? 0 : 1;
		}
	}

	private static int total(int[][] grid, int col) {
		int n = grid.length;
		int count = 0;
		for (int i = 0; i < n; i++) {
			if (grid[i][col] == 1)
				count++;
		}
		return Math.max(count, n - count);
	}
	
	private static int solve(int[][] grid) {
		int n = grid.length;
		int m = grid[0].length;

		int nn = 1 << n;
		int max = Integer.MIN_VALUE;
		
		for (int i = 0; i < nn; i++){
			for (int j = 0; j < n; j++){
				if ((i & (1 << j)) != 0) {
					flip(grid, j);
				}
			}
			int count = 0;
			for (int j = 0; j < m; j++) {
				count += total(grid, j);
			}
			max = Math.max(max, count);
			for (int j = 0; j < n; j++){
				if ((i & (1 << j)) != 0) {
					flip(grid, j);
				}
			}
		}
		return max;
	}

//	private static int solve(int[][] grid) {
//		int n = grid.length;
//		int m = grid[0].length;
//
//		int nn = 1 << n;
//		int max = Integer.MIN_VALUE;
//		while (nn-- != 0) {
//			String nns = Integer.toBinaryString(nn);
//			char[] nnc = nns.toCharArray();
//			for (int i = 0; i < nnc.length; i++) {
//				if (nnc[i] == '1') {
//					flip(grid, i);
//				}
//			}
//			int count = 0;
//			for (int j = 0; j < m; j++) {
//				count += total(grid, j);
//			}
//			max = Math.max(max, count);
//
//			for (int i = 0; i < nnc.length; i++) {
//				if (nnc[i] == '1') {
//					flip(grid, i);
//				}
//			}
//		}
//		return max;
//	}

	// private static int solve(int[][] grid) {
	// int n = grid.length;
	// int m = grid[0].length;
	//
	// int nn = 1 << n;
	//
	// int max = Integer.MIN_VALUE;
	// while (nn-- != 0) {
	// int[][] clone1 = clone(grid);
	// String nns = Integer.toBinaryString(nn);
	// char[] nnc = nns.toCharArray();
	// for (int i = nns.length() - 1; i >= 0; i--) {
	// if (nnc[i] == '1') {
	// rotate(clone1, i, true);
	// }
	// }
	// int nm = 1 << m;
	// while (nm-- != 0) {
	// int[][] clone2 = clone(clone1);
	// String nms = Integer.toBinaryString(nm);
	// char[] nmc = nms.toCharArray();
	// for (int i = nms.length() - 1; i >= 0; i--) {
	// if (nmc[i] == '1') {
	// rotate(clone2, i, false);
	// }
	// }
	// max = Math.max(max, total(clone2));
	// }
	// }
	// return max;
	// }
	//
	// private static int[][] clone(int[][] grid) {
	// int n = grid.length;
	// int m = grid[0].length;
	// int[][] clone = new int[n][m];
	// for (int i = 0; i < n; i++) {
	// for (int j = 0; j < m; j++) {
	// clone[i][j] = grid[i][j];
	// }
	// }
	// return clone;
	// }
	//
	// private static void rotate(int[][] grid, int x, boolean isRow) {
	// int n = grid.length;
	// int m = grid[0].length;
	// if (isRow) {
	// for (int i = 0; i < m; i++) {
	// grid[x][i] = grid[x][i] == 1 ? 0 : 1;
	// }
	// } else {
	// for (int i = 0; i < n; i++) {
	// grid[i][x] = grid[i][x] == 1 ? 0 : 1;
	// }
	// }
	// }
	//
	// private static int total(int[][] grid) {
	// int n = grid.length;
	// int m = grid[0].length;
	//
	// int total = 0;
	// for (int i = 0; i < n; i++) {
	// for (int j = 0; j < m; j++) {
	// if (grid[i][j] == 1)
	// total++;
	// }
	// }
	// return total;
	// }

}

Measured memory_bytes: 78724