#include <bits/stdc++.h>
using namespace std;
template <typename T>
auto operator<<(ostream& out, T& container)
    -> decltype(container.begin(), container.end(), out) {
  bool first = true;
  out << "[";
  for (auto it = container.begin(); it != container.end(); ++it) {
    if (!first) out << ", ";
    out << *it;
    first = false;
  }
  return out << "]";
}
int main() {
  int n;
  cin >> n;
  int cost[4][2] = {};
  for (int i = 0; i < 4; ++i) {
    for (int r = 0; r < n; ++r)
      for (int c = 0; c < n; ++c) {
        char x;
        cin >> x;
        if (x == '1' == (r % 2 == c % 2))
          cost[i][0]++;
        else
          cost[i][1]++;
      }
  }
  int best = 1ll << 30;
  vector<int> p = {0, 1, 2, 3};
  do {
    best = min(best,
               cost[p[0]][0] + cost[p[1]][0] + cost[p[2]][1] + cost[p[3]][1]);
  } while (next_permutation(p.begin(), p.end()));
  cout << best << endl;
}
