#include using namespace std; struct dian { double x; double y; }p[5]; double pos[5]; double cal(int id,double den) { if(pos[id]>den)return min(pos[id]-den,den+4-pos[id]); else return min(pos[id]+4-den,den-pos[id]); } int main() { int t; while(scanf("%d",&t)!=EOF) { while(t--) { for(int i=0;i<4;i++)scanf("%lf%lf",&p[i].x,&p[i].y); for(int i=0;i<4;i++) { if(p[i].y==0)pos[i]=p[i].x; if(p[i].y==1)pos[i]=3-p[i].x; if(p[i].x==0)pos[i]=4-p[i].y; if(p[i].x==1)pos[i]=1+p[i].y; } sort(pos,pos+4); double ans=100; double tmp,dis,d; for(int i=0;i<4;i++) { for(double l=0;l<=3;l++) { if(l<=pos[i]&&pos[i]<=l+1) { dis=pos[i]-l; //1 tmp=0; d=l+1+dis; if(d>=4)d-=4; tmp+=cal((i+1)%4,d); d=l+2+dis; if(d>=4)d-=4; tmp+=cal((i+2)%4,d); d=l+3+dis; if(d>=4)d-=4; tmp+=cal((i+3)%4,d); ans=min(ans,tmp); //2 tmp=0; d=l+2-dis; if(d>=4)d-=4; tmp+=cal((i+1)%4,d); d=l+2+dis; if(d>=4)d-=4; tmp+=cal((i+2)%4,d); d=l+4-dis; if(d>=4)d-=4; tmp+=cal((i+3)%4,d); ans=min(ans,tmp); //3 tmp=0; d=l; if(d>=4)d-=4; tmp+=cal((i)%4,d); d=l+2; if(d>=4)d-=4; tmp+=cal((i+1)%4,d); d=l+2; if(d>=4)d-=4; tmp+=cal((i+2)%4,d); d=l; if(d>=4)d-=4; tmp+=cal((i+3)%4,d); ans=min(ans,tmp); //4 tmp=0; d=l+1; if(d>=4)d-=4; tmp+=cal((i)%4,d); d=l+3; if(d>=4)d-=4; tmp+=cal((i+1)%4,d); d=l+3; if(d>=4)d-=4; tmp+=cal((i+2)%4,d); d=l+1; if(d>=4)d-=4; tmp+=cal((i+3)%4,d); ans=min(ans,tmp); } } } printf("%.12lf\n",ans); } } return 0; }