#include <bits/stdc++.h>
using namespace std;
template <class T>
void chmin(T &t, T f) {
  if (t > f) t = f;
}
template <class T>
void chmax(T &t, T f) {
  if (t < f) t = f;
}
int INF = (1 << 29);
int n, m;
int table[8][8];
void init() {}
void input() {
  cin >> n >> m;
  for (int i = (0); i < (n); i++)
    for (int j = (0); j < (m); j++) cin >> table[i][j];
}
void solve() {
  int mask = 1 << m;
  int crt[1 << 8], nxt[1 << 8];
  for (int i = (0); i < (mask); i++) crt[i] = INF;
  crt[0] = 0;
  for (int i = (0); i < (n); i++)
    for (int j = (0); j < (m); j++) {
      for (int k = (0); k < (mask); k++) nxt[k] = INF;
      for (int k = (0); k < (mask); k++) {
        if (k & 1) chmin(nxt[k >> 1], crt[k]);
        if (!(k & 3) && j < m - 1) {
          int add = (table[i][j] == table[i][j + 1] ? 0 : 1);
          chmin(nxt[(k >> 1) | 1], crt[k] + add);
        }
        if (!(k & 1) && i < n - 1) {
          int add = (table[i][j] == table[i + 1][j] ? 0 : 1);
          chmin(nxt[(k >> 1) | (1 << (m - 1))], crt[k] + add);
        }
      }
      swap(crt, nxt);
    }
  cout << crt[0] << endl;
}
int main() {
  init();
  input();
  solve();
  return 0;
}
