#include <bits/stdc++.h>
using namespace std;
void rotate(long long &x, long long &y, long long a, long long b) {
  long long z1 = (-(y - b) + a);
  long long z2 = (x - a) + b;
  x = z1;
  y = z2;
}
long long dist(pair<long long, long long> p1, pair<long long, long long> p2) {
  long long x = p1.first - p2.first;
  long long y = p1.second - p2.second;
  return (x * x + y * y);
}
bool chksq(pair<long long, long long> p1, pair<long long, long long> p2,
           pair<long long, long long> p3, pair<long long, long long> p4) {
  long long d2 = dist(p1, p2);
  long long d3 = dist(p1, p3);
  long long d4 = dist(p1, p4);
  if (d2 == 0) {
    return false;
  }
  if (d2 == d3 && 2 * d2 == d4 && 2 * d2 == dist(p2, p3)) {
    long long d = dist(p2, p4);
    return (d == dist(p3, p4) && d == d2);
  }
  if (d2 == d4 && 2 * d2 == d3 && 2 * d2 == dist(p2, p4)) {
    long long d = dist(p2, p3);
    return (d == dist(p3, p4) && d == d2);
  }
  if (d4 == d3 && 2 * d3 == d2 && 2 * d3 == dist(p3, p4)) {
    long long d = dist(p3, p2);
    return (d == dist(p4, p2) && d == d3);
  }
  return false;
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long n;
  cin >> n;
  for (long long i = 0; i < n; i++) {
    long long ans = INT_MAX;
    vector<pair<long long, long long> > c[4];
    for (long long j = 0; j < 4; j++) {
      long long x, y, a, b;
      cin >> x >> y >> a >> b;
      c[j].push_back({x, y});
      for (long long k = 0; k < 3; k++) {
        rotate(x, y, a, b);
        c[j].push_back({x, y});
      }
    }
    for (long long l1 = 0; l1 < 4; l1++) {
      for (long long l2 = 0; l2 < 4; l2++) {
        for (long long l3 = 0; l3 < 4; l3++) {
          for (long long l4 = 0; l4 < 4; l4++) {
            if (chksq(c[0][l1], c[1][l2], c[2][l3], c[3][l4])) {
              ans = min(ans, l1 + l2 + l3 + l4);
            }
          }
        }
      }
    }
    if (ans == INT_MAX) {
      ans = -1;
    }
    cout << ans << "\n";
  }
}
