#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<queue>
int first[5],end[5];
int vis[20010];
using namespace std;
struct D
{
int d;
int p[5];
};
int hash(int *s)
{
int temp=0;
for(int i = 0; i < 4; i++)
temp += s[i] + temp*10;
return temp;
}
int try_insert(int *s)
{
int x = hash(s);
if(!vis[x])
return vis[x] = 1;
return 0;
}
int solve()
{
queue<D> q;
D u,v;
u.d = 0;
memcpy(u.p,first,sizeof(first));
q.push(u);
while(!q.empty())
{
u = q.front();
q.pop();
if(!memcmp(u.p,end,sizeof(end)))
{
printf("%d\n",u.d);
return 0;
}
for(int i = 0; i < 4; i++)
{
v.d = u.d+1;
memcpy(v.p,u.p,sizeof(u.p));
v.p[i] = (10+u.p[i]+1)%10;
if(try_insert(v.p))
q.push(v);
v.d = u.d+1;
memcpy(v.p,u.p,sizeof(u.p));
v.p[i] = (10+u.p[i]-1)%10;
if(try_insert(v.p))
q.push(v);
}
}
printf("-1\n");
}
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
memset(vis,0,sizeof(vis));
for(int i = 0; i < 4; i++)
scanf("%d",&first[i]);
for(int i = 0; i < 4; i++)
scanf("%d",&end[i]);
scanf("%d",&n);
for(int i = 0; i < n; i++)
{
int te[5];
for(int j = 0; j < 4; j++)
scanf("%d",&te[j]);
vis[hash(te)] = 1;
}
solve();
}
return 0;
}
#include<cstring>
#include<cstdlib>
#include<queue>
int first[5],end[5];
int vis[20010];
using namespace std;
struct D
{
int d;
int p[5];
};
int hash(int *s)
{
int temp=0;
for(int i = 0; i < 4; i++)
temp += s[i] + temp*10;
return temp;
}
int try_insert(int *s)
{
int x = hash(s);
if(!vis[x])
return vis[x] = 1;
return 0;
}
int solve()
{
queue<D> q;
D u,v;
u.d = 0;
memcpy(u.p,first,sizeof(first));
q.push(u);
while(!q.empty())
{
u = q.front();
q.pop();
if(!memcmp(u.p,end,sizeof(end)))
{
printf("%d\n",u.d);
return 0;
}
for(int i = 0; i < 4; i++)
{
v.d = u.d+1;
memcpy(v.p,u.p,sizeof(u.p));
v.p[i] = (10+u.p[i]+1)%10;
if(try_insert(v.p))
q.push(v);
v.d = u.d+1;
memcpy(v.p,u.p,sizeof(u.p));
v.p[i] = (10+u.p[i]-1)%10;
if(try_insert(v.p))
q.push(v);
}
}
printf("-1\n");
}
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
memset(vis,0,sizeof(vis));
for(int i = 0; i < 4; i++)
scanf("%d",&first[i]);
for(int i = 0; i < 4; i++)
scanf("%d",&end[i]);
scanf("%d",&n);
for(int i = 0; i < n; i++)
{
int te[5];
for(int j = 0; j < 4; j++)
scanf("%d",&te[j]);
vis[hash(te)] = 1;
}
solve();
}
return 0;
}