using namespace std;
#include <bits/stdc++.h>
#define MAX 100100
#define MOD 1000000007
#define PI 3.1415926535897932384
#define F first
#define S second
#define pb push_back
#define mp make_pair
#define endl "\n"
typedef long long ll;
typedef unsigned long long ull;
vector<int> vals;
map<int, int> mym;
queue<pair<vector<int>, int> > myq;
int get_key(vector<int> vet){
int acm = 0, mul = 1;
for(int i = 0;i < vet.size();i++){
acm += vet[i]*mul;
mul *= 10;
}
return acm;
}
void f(){
int i;
for(int i = 1;i < 9;i++) vals.pb(i);
vals.pb(0);
myq.push(mp(vals, 1));
while(!myq.empty()){
vector<int> vet = myq.front().F;
int p = myq.front().S, id = get_key(vet);
myq.pop();
if(mym[id]) continue;
for(i = 0;i < vet.size();i++){
if(!vet[i]) break;
}
mym[id] = p;
if(i != 0 && i != 3 && i != 6){
swap(vet[i], vet[i-1]);
if(!mym[get_key(vet)]) myq.push(mp(vet, p+1));
swap(vet[i], vet[i-1]);
}
if(i > 2){
swap(vet[i], vet[i-3]);
if(!mym[get_key(vet)]) myq.push(mp(vet, p+1));
swap(vet[i], vet[i-3]);
}
if(i != 2 && i != 5 && i != 8){
swap(vet[i], vet[i+1]);
if(!mym[get_key(vet)]) myq.push(mp(vet, p+1));
swap(vet[i], vet[i+1]);
}
if(i < 6){
swap(vet[i], vet[i+3]);
if(!mym[get_key(vet)]) myq.push(mp(vet, p+1));
swap(vet[i], vet[i+3]);
}
}
return;
}
int main(){
//freopen("in", "r", stdin);
//freopen("out", "w", stdout);
f();
int t;
cin >> t;
for(int test = 1;test <= t;test++){
for(int i = 0;i < 9;i++) scanf("%d", &vals[i]);
int aux = mym[get_key(vals)];
cout << "Case " << test << ": ";
if(!aux) cout << "impossible" << endl;
else cout << aux-1 << endl;
}
return 0;
}
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIE1BWCAxMDAxMDAKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwojZGVmaW5lIFBJIDMuMTQxNTkyNjUzNTg5NzkzMjM4NAojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGVuZGwgIlxuIgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwoKdmVjdG9yPGludD4gdmFsczsKbWFwPGludCwgaW50PiBteW07CnF1ZXVlPHBhaXI8dmVjdG9yPGludD4sIGludD4gPiBteXE7CgppbnQgZ2V0X2tleSh2ZWN0b3I8aW50PiB2ZXQpewogICAgaW50IGFjbSA9IDAsIG11bCA9IDE7CgogICAgZm9yKGludCBpID0gMDtpIDwgdmV0LnNpemUoKTtpKyspewogICAgICAgIGFjbSArPSB2ZXRbaV0qbXVsOwogICAgICAgIG11bCAqPSAxMDsKICAgIH0KCiAgICByZXR1cm4gYWNtOwp9Cgp2b2lkIGYoKXsKICAgIGludCBpOwoKICAgIGZvcihpbnQgaSA9IDE7aSA8IDk7aSsrKSB2YWxzLnBiKGkpOwogICAgdmFscy5wYigwKTsKCiAgICBteXEucHVzaChtcCh2YWxzLCAxKSk7CgogICAgd2hpbGUoIW15cS5lbXB0eSgpKXsKICAgICAgICB2ZWN0b3I8aW50PiB2ZXQgPSBteXEuZnJvbnQoKS5GOwogICAgICAgIGludCBwID0gbXlxLmZyb250KCkuUywgaWQgPSBnZXRfa2V5KHZldCk7CgogICAgICAgIG15cS5wb3AoKTsKCiAgICAgICAgaWYobXltW2lkXSkgY29udGludWU7CgogICAgICAgIGZvcihpID0gMDtpIDwgdmV0LnNpemUoKTtpKyspewogICAgICAgICAgICBpZighdmV0W2ldKSBicmVhazsKICAgICAgICB9CgogICAgICAgIG15bVtpZF0gPSBwOwoKICAgICAgICBpZihpICE9IDAgJiYgaSAhPSAzICYmIGkgIT0gNil7CiAgICAgICAgICAgIHN3YXAodmV0W2ldLCB2ZXRbaS0xXSk7CiAgICAgICAgICAgIGlmKCFteW1bZ2V0X2tleSh2ZXQpXSkgbXlxLnB1c2gobXAodmV0LCBwKzEpKTsKICAgICAgICAgICAgc3dhcCh2ZXRbaV0sIHZldFtpLTFdKTsKICAgICAgICB9CiAgICAgICAgaWYoaSA+IDIpewogICAgICAgICAgICBzd2FwKHZldFtpXSwgdmV0W2ktM10pOwogICAgICAgICAgICBpZighbXltW2dldF9rZXkodmV0KV0pIG15cS5wdXNoKG1wKHZldCwgcCsxKSk7CiAgICAgICAgICAgIHN3YXAodmV0W2ldLCB2ZXRbaS0zXSk7CiAgICAgICAgfQogICAgICAgIGlmKGkgIT0gMiAmJiBpICE9IDUgJiYgaSAhPSA4KXsKICAgICAgICAgICAgc3dhcCh2ZXRbaV0sIHZldFtpKzFdKTsKICAgICAgICAgICAgaWYoIW15bVtnZXRfa2V5KHZldCldKSBteXEucHVzaChtcCh2ZXQsIHArMSkpOwogICAgICAgICAgICBzd2FwKHZldFtpXSwgdmV0W2krMV0pOwogICAgICAgIH0KICAgICAgICBpZihpIDwgNil7CiAgICAgICAgICAgIHN3YXAodmV0W2ldLCB2ZXRbaSszXSk7CiAgICAgICAgICAgIGlmKCFteW1bZ2V0X2tleSh2ZXQpXSkgbXlxLnB1c2gobXAodmV0LCBwKzEpKTsKICAgICAgICAgICAgc3dhcCh2ZXRbaV0sIHZldFtpKzNdKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgppbnQgbWFpbigpewogICAgLy9mcmVvcGVuKCJpbiIsICJyIiwgc3RkaW4pOwogICAgLy9mcmVvcGVuKCJvdXQiLCAidyIsIHN0ZG91dCk7CgogICAgZigpOwoKICAgIGludCB0OwogICAgY2luID4+IHQ7CgogICAgZm9yKGludCB0ZXN0ID0gMTt0ZXN0IDw9IHQ7dGVzdCsrKXsKICAgICAgICBmb3IoaW50IGkgPSAwO2kgPCA5O2krKykgc2NhbmYoIiVkIiwgJnZhbHNbaV0pOwoKICAgICAgICBpbnQgYXV4ID0gbXltW2dldF9rZXkodmFscyldOwoKICAgICAgICBjb3V0IDw8ICJDYXNlICIgPDwgdGVzdCA8PCAiOiAiOwogICAgICAgIGlmKCFhdXgpIGNvdXQgPDwgImltcG9zc2libGUiIDw8IGVuZGw7CiAgICAgICAgZWxzZSBjb3V0IDw8IGF1eC0xIDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K