import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Queue;
import java.util.Scanner;
public class Main {
static class Node
{
int water[]=new int[3];//水杯水
int step;//步骤
}
static class M
{
boolean visted[][][];//标记水杯的状态
int start[];//输入状态
int end[];//输出状态
void init()//初始化
{
Scanner aa=new Scanner(System.in);
int N=aa.nextInt();
while(N--!=0)
{
start=new int[3];
end=new int[3];
visted=new boolean[100][100][100];
for(int i=0;i<3;i++)
{
start[i]=aa.nextInt();
}
for(int i=0;i<3;i++)
{
end[i]=aa.nextInt();
}
int k=BFS();
System.out.println(k);
}
}
int achieve(Node node) //判断是否到达结束状态
{
for(int i = 0; i < 3; i++)
{
if(node.water[i] != end[i])
return 0;
}
return 1;
}
int BFS()//广度优先
{
Queue<Node> queue=new LinkedList<Node>();//生成队列
Node s1=new Node();
s1.water[0]=start[0];
s1.water[1]=0;
s1.water[2]=0;
s1.step=0;
queue.offer(s1);
visted[start[0]][0][0]=true;
while(!queue.isEmpty())
{
Node node=queue.element();//获得第一个元素
queue.poll();//删除第一个元素
if(achieve(node)==1)//判断是否符合条件
{
return node.step;
}
for(int i=0;i<3;i++)//将水从第i个杯子倒到第j个杯子
{
for(int j=0;j<3;j++)
{
if(i==j)
continue;
if(node.water[i]!=0&&node.water[j]<start[j])//倒水的杯子必须有谁=水,并且接水的杯子的水量不能超过上限
{
Node node2=new Node();
node2.step=node.step;
node2.water[0]=node.water[0];
node2.water[1]=node.water[1];
node2.water[2]=node.water[2];
int pour=start[j]-node2.water[j];//要倒的水量
if(node2.water[i]>=pour)//不会倒空
{
node2.water[j]+=pour;
node2.water[i]-=pour;
}
else//倒空
{
node2.water[j]+=node2.water[i];
node2.water[i]=0;
}
node2.step=node.step+1;
if(!visted[node2.water[0]][node2.water[1]][node2.water[2]])//如果这种情况没有出现
{
visted[node2.water[0]][node2.water[1]][node2.water[2]]=true;
queue.add(node2);//入队
}
}
}
}
}
return -1;
}
}
public static void main(String str[])
{
M m=new M();
m.init();
}
}
{
Queue<Node> queue=new LinkedList<Node>();//生成队列
Node s1=new Node();
s1.water[0]=start[0];
s1.water[1]=0;
s1.water[2]=0;
s1.step=0;
queue.offer(s1);
visted[start[0]][0][0]=true;
while(!queue.isEmpty())
{
Node node=queue.element();//获得第一个元素
queue.poll();//删除第一个元素
if(achieve(node)==1)//判断是否符合条件
{
return node.step;
}
for(int i=0;i<3;i++)//将水从第i个杯子倒到第j个杯子
{
for(int j=0;j<3;j++)
{
if(i==j)
continue;
if(node.water[i]!=0&&node.water[j]<start[j])//倒水的杯子必须有谁=水,并且接水的杯子的水量不能超过上限
{
Node node2=new Node();
node2.step=node.step;
node2.water[0]=node.water[0];
node2.water[1]=node.water[1];
node2.water[2]=node.water[2];
int pour=start[j]-node2.water[j];//要倒的水量
if(node2.water[i]>=pour)//不会倒空
{
node2.water[j]+=pour;
node2.water[i]-=pour;
}
else//倒空
{
node2.water[j]+=node2.water[i];
node2.water[i]=0;
}
node2.step=node.step+1;
if(!visted[node2.water[0]][node2.water[1]][node2.water[2]])//如果这种情况没有出现
{
visted[node2.water[0]][node2.water[1]][node2.water[2]]=true;
queue.add(node2);//入队
}
}
}
}
}
return -1;
}
}
public static void main(String str[])
{
M m=new M();
m.init();
}
}