func_code_string: #include <bits/stdc++.h>   using namespace std;   struct point {     int x, y, a, b;   };   point rotate(point p) {     point p1 = p;     int x = p1.x - p1.a, y = p1.y - p1.b;     p1.x = -y + p1.a;     p1.y = x + p1.b;     return p1;   }   bool comp(point p1, point p2) {     if (p1.x == p2.x) return p1.y < p2.y;     return p1.x < p2.x;   }   bool issq(point p[]) {     sort(p, p + 4, comp);     if (p[0].x == p[3].x && p[0].y == p[3].y) return false;     if (p[0].x == p[1].x && p[0].y == p[1].y) return false;     int d11 = (p[0].x - p[1].x) * (p[0].x - p[1].x) +               (p[0].y - p[1].y) * (p[0].y - p[1].y);     int d22 = (p[0].x - p[2].x) * (p[0].x - p[2].x) +               (p[0].y - p[2].y) * (p[0].y - p[2].y);     int d1 = (p[0].x - p[3].x) * (p[0].x - p[3].x) +              (p[0].y - p[3].y) * (p[0].y - p[3].y);     int d2 = (p[1].x - p[2].x) * (p[1].x - p[2].x) +              (p[1].y - p[2].y) * (p[1].y - p[2].y);     if (p[0].x + p[3].x == p[1].x + p[2].x &&         p[0].y + p[3].y == p[1].y + p[2].y && d11 == d22 && d1 == d2)       return true;     return false;   }   int main() {     int n;     cin >> n;     while (n--) {       point p[4];       for (int i = 0; i < 4; i++) cin >> p[i].x >> p[i].y >> p[i].a >> p[i].b;       int ans = 17;       for (int i = 0; i < 4; i++) {         for (int j = 0; j < 4; j++) {           for (int k = 0; k < 4; k++) {             for (int l = 0; l < 4; l++) {               point pc[4];               for (int il = 0; il < 4; il++) pc[il] = p[il];               if (issq(pc)) ans = min(ans, i + j + k + l);               p[3] = rotate(p[3]);             }             p[2] = rotate(p[2]);           }           p[1] = rotate(p[1]);         }         p[0] = rotate(p[0]);       }       if (ans == 17)         cout << -1;       else         cout << ans;       cout <<   n ;     }     return 0;   }   