- /*__ _(_) __ _  ___  ___ _   _  __| | __ _ _   _| |_ ___ 
-  / _` | |/ _` |/ _ \/ __| | | |/ _` |/ _` | | | | __/ _ \ 
- | (_| | | (_| | (_) \__ \ |_| | (_| | (_| | |_| | || (_) | 
-  \__, |_|\__,_|\___/|___/\__,_|\__,_|\__,_|\__,_|\__\___/ 
-  |___/                                  Accepted Code  */ 
-   
- #include<bits/stdc++.h> 
- using namespace std; 
-   
- int maxint=1e9+7; 
- int n=12; 
- int he[12][12]; 
- int a[12]; 
- vector<int> ke[12]; 
- int res,solved; 
-   
-   
- void init_edge() 
- { 
-     int dk[]= {1,3,6,12}; 
-     for(int i=0; i<12; i++) 
-     { 
-         for(int j=i+1; j<12; j++) 
-         { 
-             he[i][j]=he[j][i]=maxint; 
-             bool ok=false; 
-             int k=0; 
-             for(k=0; k<4; k++) 
-                 if(abs(i-j)==dk[k]) 
-                 { 
-                     ok=true; 
-                     break; 
-                 } 
-             if(!ok) continue; 
-             int sc=dk[k+1]; 
-             if(floor(i/sc)==floor(j/sc)) 
-             { 
-                 ke[i].push_back(j); 
-                 ke[j].push_back(i); 
-                 he[i][j]=he[j][i]=1; 
-             } 
-         } 
-         he[i][i]=0; 
-     } 
- } 
-   
- void init_he() 
- { 
-     for(int k=0; k<n; k++) 
-         for(int i=0; i<n; i++) 
-             for(int j=0; j<n; j++) 
-                 he[i][j]=min(he[i][j],he[i][k]+he[k][j]); 
- } 
-   
- inline int DFS(int cur,int pre,int sum_he,int dep) 
- { 
-     if(sum_he==0) 
-     { 
-         solved=dep; 
-         return solved; 
-     } 
-   
-     if(dep+sum_he>res) return dep+sum_he; 
-     int res2=maxint; 
-     int save_he=sum_he; 
-   
-     for(int j:ke[cur]) 
-     { 
-         if(j==pre) continue; 
-         sum_he-=he[j][a[j]]; 
-         swap(a[cur],a[j]); 
-         sum_he+=he[cur][a[cur]]; 
-         int tmp=DFS(j,cur,sum_he,dep+1); 
-         if(solved!=0) return solved; 
-         sum_he=save_he; 
-         swap(a[cur],a[j]); 
-         res2=min(tmp,res2); 
-     } 
-     return res2; 
- } 
-   
- void solve() 
- { 
-     int l0; 
-     for(int i=0; i<12; i++) cin>>a[i],a[i]==0?l0=i:1; 
-   
-     res=0; 
-     int sum_he=0; 
-     for(int i=0; i<12; i++) i==l0?1:sum_he+=he[i][a[i]]; 
-     if(sum_he==0) 
-     { 
-         cout<<0<<endl; 
-         return; 
-     } 
-   
-     solved=0; 
-     res=sum_he; 
-     while (solved==0) 
-     { 
-         res=DFS(l0,-1,sum_he,0); 
-     } 
-     cout<<solved<<endl; 
- } 
-   
- int main() 
- { 
-     init_edge(); 
-     init_he(); 
-     int T; 
-     cin>>T; 
-     while(T--)  
- 		solve(); 
-     return 0; 
- } 
-   
				LypfXyBfKF8pIF9fIF8gIF9fXyAgX19fIF8gICBfICBfX3wgfCBfXyBfIF8gICBffCB8XyBfX18KIC8gX2AgfCB8LyBfYCB8LyBfIFwvIF9ffCB8IHwgfC8gX2AgfC8gX2AgfCB8IHwgfCBfXy8gXyBcCnwgKF98IHwgfCAoX3wgfCAoXykgXF9fIFwgfF98IHwgKF98IHwgKF98IHwgfF98IHwgfHwgKF8pIHwKIFxfXywgfF98XF9fLF98XF9fXy98X19fL1xfXyxffFxfXyxffFxfXyxffFxfXyxffFxfX1xfX18vCiB8X19fLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHRlZCBDb2RlICAqLwoKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYXhpbnQ9MWU5Kzc7CmludCBuPTEyOwppbnQgaGVbMTJdWzEyXTsKaW50IGFbMTJdOwp2ZWN0b3I8aW50PiBrZVsxMl07CmludCByZXMsc29sdmVkOwoKCnZvaWQgaW5pdF9lZGdlKCkKewogICAgaW50IGRrW109IHsxLDMsNiwxMn07CiAgICBmb3IoaW50IGk9MDsgaTwxMjsgaSsrKQogICAgewogICAgICAgIGZvcihpbnQgaj1pKzE7IGo8MTI7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGhlW2ldW2pdPWhlW2pdW2ldPW1heGludDsKICAgICAgICAgICAgYm9vbCBvaz1mYWxzZTsKICAgICAgICAgICAgaW50IGs9MDsKICAgICAgICAgICAgZm9yKGs9MDsgazw0OyBrKyspCiAgICAgICAgICAgICAgICBpZihhYnMoaS1qKT09ZGtba10pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgb2s9dHJ1ZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoIW9rKSBjb250aW51ZTsKICAgICAgICAgICAgaW50IHNjPWRrW2srMV07CiAgICAgICAgICAgIGlmKGZsb29yKGkvc2MpPT1mbG9vcihqL3NjKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAga2VbaV0ucHVzaF9iYWNrKGopOwogICAgICAgICAgICAgICAga2Vbal0ucHVzaF9iYWNrKGkpOwogICAgICAgICAgICAgICAgaGVbaV1bal09aGVbal1baV09MTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBoZVtpXVtpXT0wOwogICAgfQp9Cgp2b2lkIGluaXRfaGUoKQp7CiAgICBmb3IoaW50IGs9MDsgazxuOyBrKyspCiAgICAgICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKQogICAgICAgICAgICBmb3IoaW50IGo9MDsgajxuOyBqKyspCiAgICAgICAgICAgICAgICBoZVtpXVtqXT1taW4oaGVbaV1bal0saGVbaV1ba10raGVba11bal0pOwp9CgppbmxpbmUgaW50IERGUyhpbnQgY3VyLGludCBwcmUsaW50IHN1bV9oZSxpbnQgZGVwKQp7CiAgICBpZihzdW1faGU9PTApCiAgICB7CiAgICAgICAgc29sdmVkPWRlcDsKICAgICAgICByZXR1cm4gc29sdmVkOwogICAgfQoKICAgIGlmKGRlcCtzdW1faGU+cmVzKSByZXR1cm4gZGVwK3N1bV9oZTsKICAgIGludCByZXMyPW1heGludDsKICAgIGludCBzYXZlX2hlPXN1bV9oZTsKCiAgICBmb3IoaW50IGo6a2VbY3VyXSkKICAgIHsKICAgICAgICBpZihqPT1wcmUpIGNvbnRpbnVlOwogICAgICAgIHN1bV9oZS09aGVbal1bYVtqXV07CiAgICAgICAgc3dhcChhW2N1cl0sYVtqXSk7CiAgICAgICAgc3VtX2hlKz1oZVtjdXJdW2FbY3VyXV07CiAgICAgICAgaW50IHRtcD1ERlMoaixjdXIsc3VtX2hlLGRlcCsxKTsKICAgICAgICBpZihzb2x2ZWQhPTApIHJldHVybiBzb2x2ZWQ7CiAgICAgICAgc3VtX2hlPXNhdmVfaGU7CiAgICAgICAgc3dhcChhW2N1cl0sYVtqXSk7CiAgICAgICAgcmVzMj1taW4odG1wLHJlczIpOwogICAgfQogICAgcmV0dXJuIHJlczI7Cn0KCnZvaWQgc29sdmUoKQp7CiAgICBpbnQgbDA7CiAgICBmb3IoaW50IGk9MDsgaTwxMjsgaSsrKSBjaW4+PmFbaV0sYVtpXT09MD9sMD1pOjE7CgogICAgcmVzPTA7CiAgICBpbnQgc3VtX2hlPTA7CiAgICBmb3IoaW50IGk9MDsgaTwxMjsgaSsrKSBpPT1sMD8xOnN1bV9oZSs9aGVbaV1bYVtpXV07CiAgICBpZihzdW1faGU9PTApCiAgICB7CiAgICAgICAgY291dDw8MDw8ZW5kbDsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc29sdmVkPTA7CiAgICByZXM9c3VtX2hlOwogICAgd2hpbGUgKHNvbHZlZD09MCkKICAgIHsKICAgICAgICByZXM9REZTKGwwLC0xLHN1bV9oZSwwKTsKICAgIH0KICAgIGNvdXQ8PHNvbHZlZDw8ZW5kbDsKfQoKaW50IG1haW4oKQp7CiAgICBpbml0X2VkZ2UoKTsKICAgIGluaXRfaGUoKTsKICAgIGludCBUOwogICAgY2luPj5UOwogICAgd2hpbGUoVC0tKSAKCQlzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0K