#include <bits/stdc++.h>
#pragma GCC optimize("O2")
using namespace std;
const int N = 1e6 + 10;
const long long mod = 1e9 + 7;
const long long mod2 = 998244353;
const long long inf = 8e18;
const int LOG = 20;
long long pw(long long a, long long b, long long M) {
  return (!b ? 1
             : (b & 1 ? (a * pw(a * a % M, b / 2, M)) % M
                      : pw(a * a % M, b / 2, M)));
}
string s[N];
int n, m;
long long dp[LOG][1 << LOG];
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> s[i];
  }
  for (int j = 0; j < m; j++) {
    int mask = 0;
    for (int i = 0; i < n; i++) {
      mask += (s[i][j] == '1') << i;
    }
    dp[0][mask]++;
  }
  for (int i = 0; i < n; i++) {
    for (int x = n; ~(x - 1); x--) {
      for (int mask = 0; mask < 1 << n; mask++) {
        dp[x][mask] += dp[x - 1][mask ^ (1 << i)];
      }
    }
  }
  long long tot = inf;
  for (int mask = 0; mask < 1 << n; mask++) {
    long long cu = 0;
    for (int i = 0; i <= n; i++) {
      cu += 1ll * min(i, n - i) * dp[i][mask];
    }
    tot = min(tot, cu);
  }
  cout << tot;
  return 0;
}
