9782: 军训

内存限制:1024 MB 时间限制:1 S
题面:传统 评测方式:文本比较 上传者:
提交:0 通过:0

题目描述

大学生活开始了!大学生活的开始是军训。
Pog 是一种长着两只脚的猪。Pog 的两只脚始终保持 1 的距离,他总是站在二维平面上的某两个整点
上。在军训时,教官教 Pog 学会了一项特别的本领:旋转。具体规则如下:
• 每次操作,Pog 可以选择任意一只脚作为轴心点,然后将另一只脚绕这只脚进行 90 的旋转(可
以选择顺时针或逆时针方向)。
现在 Pog 站在了平面上的两个点,分别是 (sx1, sy1) 与 (sx2, sy2);他的目标是控制自己的两只脚,移动
到另一组点 (tx1, ty1) 和 (tx2, ty2) 上。你只需要最终让这两只脚分别占据目标点即可,不要求脚的左右
顺序与起始时保持一致。当然,不论怎么旋转,两只脚之间的距离始终保持为 1。
请你帮 Pog 计算:最少需要旋转多少次,他才能完成从起点到终点的转换?如果无论怎么旋转都无法到
达目标状态,请输出 −1。

输入格式

本题有多组数据。第一行一个数据 T (1 ≤ T ≤ 105 ) 表示数据组数。
对于每组数据,包含一行八个整数,分别是 sx1, sy1, sx2, sy2, tx1, ty1, tx2, ty2 (|s ∗ |, |t ∗| ≤ 109 )。
保证 |sx1 − sx2| + |sy1 − sy2| = |tx1 − tx2| + |ty1 − ty2| = 1。

输出格式

对于每组数据,如果 Pog 可以到达终点,输出一行一个整数,表示最少需要的旋转次数。否则,输出
−1。

输入样例 复制

7
0 0 0 1 0 0 0 1
0 0 1 0 0 0 0 1
0 0 0 1 1 1 0 1
0 0 0 1 1 1 1 0
0 0 0 1 0 0 -1 0
0 0 1 0 0 1 -1 1
0 0 -1 0 40 50 40 51

输出样例 复制

0
1
1
2
1
2
101

数据范围与提示