#include <bits/stdc++.h>
using namespace std;
char s[20][100005];
int n, m;
int dp[1 << 19][20];
int ndp[1 << 19][20];
int main() {
  scanf("%d%d", &n, &m);
  for (int i = (0); i < (n); i++) scanf("%s", s[i]);
  for (int i = (0); i < (m); i++) {
    int x = 0;
    for (int j = (0); j < (n); j++)
      if (s[j][i] == '1') x |= 1 << j;
    if (x & (1 << (n - 1))) x = x ^ ((1 << n) - 1);
    dp[x][0]++;
  }
  auto cur = dp, prv = ndp;
  for (int i = (1); i < (n); i++) {
    swap(cur, prv);
    for (int x = (0); x < (1 << (n - 1)); x++) {
      for (int d = (0); d < (i + 1); d++) {
        cur[x][d] = prv[x][d];
        if (d) cur[x][d] += prv[x ^ (1 << (i - 1))][d - 1];
      }
    }
  }
  int res = 1e9;
  for (int x = (0); x < (1 << (n - 1)); x++) {
    int a = 0;
    for (int i = (0); i < (n); i++) a += cur[x][i] * min(i, n - i);
    res = min(res, a);
  }
  printf("%d\n", res);
}
