编程题
### 问题描述
小飞获得了一个三元组 $(x, y, z)$,现在小飞希望通过以下操作变换 $(x, y, z)$ 得到 $(a, b, c)$。
合法操作如下:
1. 将 $x,y,z$ 的按位与赋给 $x$。
2. 将 $x,y,z$ 的按位或赋给 $y$。
3. 将 $x,y,z$ 的按位异或赋给 $z$。
4. 当 $\max(x,y,z) < k$ 时,令 $x,y,z$ 都加上 $1$。
请你输出将 $(x, y, z)$ 变换至 $(a, b, c)$ 的最少操作次数,若不能完成,则输出 $-1$。
### 输入格式
第一行一个整数 $t$,表示测试数据组数。
接下来 $t$ 行,每行包含 $7$ 个整数,$x,y,z,a,b,c,k$。
### 输出格式
输出 $t$ 行,每行包括一个整数,表示该组测试数据所需的最少操作次数,若不能完成,则输出 $-1$。
### 样例输入
```text
1
1 1 1 2 2 2 50
```
### 样例输出
```text
1
```
### 评测数据规模
对于 $100$% 的评测数据,$1 \leq t \leq 10$, $0 \leq x,y,z,a,b,c,k \leq 100$。