#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
const int INF = 1e9;
int n, m, va[maxn], dp[22][(1 << 20) + 10], sum[22][(1 << 20) + 1];
char a[22][maxn];
int main() {
  std::ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    string s1;
    cin >> s1;
    for (int j = 0; j < m; j++) a[i][j] = s1[j];
  }
  for (int j = 0; j < m; j++) {
    for (int i = 0; i < n; i++) {
      if (a[i][j] == '1') va[j] += (1 << i);
    }
  }
  for (int j = 0; j < m; j++) dp[0][va[j]]++;
  for (int mask = 0; mask < (1 << n); mask++) sum[0][mask] = dp[0][mask];
  for (int i = 1; i <= n; i++) {
    for (int mask = 0; mask < (1 << n); mask++) {
      for (int bit = 0; bit < n; bit++) {
        dp[i][mask] += sum[i - 1][mask ^ (1 << bit)];
        if (i > 1) dp[i][mask] -= sum[i - 2][mask];
      }
      dp[i][mask] /= i;
      sum[i][mask] = dp[i][mask];
      if (i > 1) sum[i][mask] += sum[i - 2][mask];
    }
  }
  int ans = n * m;
  for (int mask = 0; mask < (1 << n); mask++) {
    int anss = 0;
    for (int i = 0; i <= n; i++) anss += (min(i, n - i) * dp[i][mask]);
    ans = min(ans, anss);
  }
  cout << ans;
  return 0;
}
