#include <iostream>
#include <fstream>
#include <cstring>
#include <bitset>
using namespace std;

long long mat[1 << 16];
long long arr[] = {-1,-4,0,1,4};

long long soloUno(long long x,long long i) {
  x ^= (1 << i);
  return x;
}

bool potenciaDeDos(long long n) {
  if(n == 0 or n == 1) return true;
  if(n % 2 != 0) return false;
  return potenciaDeDos(n >> 1);
}

long long todos(long long x,long long i) {
  x ^= (1 << i);
  long long aux = i - 1;
  if(aux >= 0) x ^= (1 << aux);
  aux = i - 4;
  if(aux >= 0) x ^= (1 << aux);
  aux = i + 1;
  if(aux < 16) x ^= (1 << aux);
  aux = i + 4;
  if(aux < 16) x ^= (1 << aux);
  return x;
}

long long dp(long long n) {
  long long &r = mat[n];
  if(r == -1 and potenciaDeDos(n)) r = 2;
  if(r == -1) {
    r = 100000;
    for(long long i = 0; i < 16; ++i) {
      r = min(r,min(2 + dp(soloUno(n,i)),1 + dp(todos(n,i))));
    }
  }
  return r;
}

int main() {
  long long lim = 1 << 16;
  memset(mat,-1,sizeof mat);
  mat[0] = 0;
  for(long long i = 1; i < lim; ++i) mat[i] = dp(i);
  long long T;
  cin >> T;
  string s,total;
  while(T--) {
    total = "";
    for(long long i = 0; i < 4; ++i) {
      cin >> s;
      total += s;
    }
    bitset<20> bs(total);
    cout << mat[bs.to_ulong()] << endl;
  }
  return 0;
}
