package gap; import java.util.Comparator; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; import java.util.Set; import java.util.TreeSet; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int loop = sc.nextInt(); while(loop-- != 0) { int[][] table = new int[4][8]; for(int i = 0; i < 4; i++) { for(int j = 1; j < 8; j++) { table[i][j] = sc.nextInt(); if(table[i][j] == 11) { table[0][0] = 11; table[i][j] = 0; } else if(table[i][j] == 21) { table[1][0] = 21; table[i][j] = 0; } else if(table[i][j] == 31) { table[2][0] = 31; table[i][j] = 0; } else if(table[i][j] == 41) { table[3][0] = 41; table[i][j] = 0; } } } State start = new State(table, 0); Queue Q = new LinkedList(); Set cache = new TreeSet(new Comparator() { public int compare(State arg0, State arg1) { for(int i = 0; i < 4; i++) { for(int j = 0; j < 8; j++) { if(arg0.table[i][j] > arg1.table[i][j]) { return 1; } else if(arg0.table[i][j] < arg1.table[i][j]) { return -1; } } } return 0; } }); Q.add(start); boolean flag = false; while(! Q.isEmpty()) { State state = Q.poll(); if(state.end()) { System.out.println(state.count); flag = true; break; } table = state.table; for(int i = 0; i < 4; i++) { for(int j = 1; j < 8; j++) { if(table[i][j] == 0) { int m = table[i][j-1]; int x = -1, y = -1; for(int ii = 0; ii < 4; ii++) { for(int jj = 1; jj < 8; jj++) { if(table[ii][jj] == m + 1) { x = ii; y = jj; break; } } } if(x >= 0) { State next = new State(table, state.count + 1); next.table[i][j] = table[x][y]; next.table[x][y] = 0; if(!cache.contains(next)) { Q.add(next); cache.add(next); } } } } } } if(!flag) { System.out.println("-1"); } } } } class State { public int[][] table; public int count; public boolean end() { for(int i = 0; i < 4; i++) { for(int j = 0; j < 7; j++) { if(table[i][j] != (i+1)*10 + (j+1)) { return false; } } } return true; } public State(int[][] t, int count) { this.count = count; table = new int[4][8]; for(int i = 0; i < 4; i++) { for(int j = 0; j < 8; j++) { table[i][j] = t[i][j]; } } } }