#include <bits/stdc++.h>
using namespace std;
int t, n, x, y;
pair<int, int> pt[17];
pair<int, int> p1, p2;
int mask;
int mat[17][17];
int mn[1<<16];
int target;
int calc(int mask){
//cout << mask << endl;
if(mask == target)
return 0;
if(mn[mask] != -1) return mn[mask];
int i;
for(i=0;(mask>>i)&1;i++);
i++;
int best = 16*16+500;
for(int j=1; j<=n; j++){
if(i != j){
best = min(best, calc(mask|mat[i][j])+1);
}
}
return mn[mask] = best;
}
int main()
{
cin >> t;
for(int k=1; k<=t; k++){
cin >> n;
for(int i=1; i<=n; i++){
cin >> x >> y;
pt[i] = make_pair(x, y);
}
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
mask = 0;
for(int m=1; m<=n; m++){
int t1 = (pt[j].first-pt[i].first)*(pt[m].second-pt[i].second);
int t2 = (pt[j].second-pt[i].second)*(pt[m].first-pt[i].first);
if(t1 == t2) mask |= (1<<(m-1));
}
mat[i][j] = mask;
}
}
fill(mn, mn+(1<<n), -1);
target = (1<<n)-1;
if(n == 1) printf("Case %d: %d\n", k, 1);
else printf("Case %d: %d\n", k, calc(0));
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCB0LCBuLCB4LCB5OwpwYWlyPGludCwgaW50PiBwdFsxN107CnBhaXI8aW50LCBpbnQ+IHAxLCBwMjsKaW50IG1hc2s7CmludCBtYXRbMTddWzE3XTsKaW50IG1uWzE8PDE2XTsKaW50IHRhcmdldDsKaW50IGNhbGMoaW50IG1hc2spewogICAgLy9jb3V0IDw8IG1hc2sgPDwgZW5kbDsKICAgIGlmKG1hc2sgPT0gdGFyZ2V0KQogICAgICAgIHJldHVybiAwOwogICAgaWYobW5bbWFza10gIT0gLTEpIHJldHVybiBtblttYXNrXTsKICAgIGludCBpOwogICAgZm9yKGk9MDsobWFzaz4+aSkmMTtpKyspOwogICAgaSsrOwogICAgaW50IGJlc3QgPSAxNioxNis1MDA7CiAgICBmb3IoaW50IGo9MTsgajw9bjsgaisrKXsKICAgICAgICBpZihpICE9IGopewogICAgICAgICAgICBiZXN0ID0gbWluKGJlc3QsIGNhbGMobWFza3xtYXRbaV1bal0pKzEpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBtblttYXNrXSA9IGJlc3Q7Cn0KaW50IG1haW4oKQp7CiAgICBjaW4gPj4gdDsKICAgIGZvcihpbnQgaz0xOyBrPD10OyBrKyspewogICAgICAgIGNpbiA+PiBuOwogICAgICAgIGZvcihpbnQgaT0xOyBpPD1uOyBpKyspewogICAgICAgICAgICBjaW4gPj4geCA+PiB5OwogICAgICAgICAgICBwdFtpXSA9IG1ha2VfcGFpcih4LCB5KTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTE7IGk8PW47IGkrKyl7CiAgICAgICAgICAgIGZvcihpbnQgaj0xOyBqPD1uOyBqKyspewogICAgICAgICAgICAgICAgbWFzayA9IDA7CiAgICAgICAgICAgICAgICBmb3IoaW50IG09MTsgbTw9bjsgbSsrKXsKICAgICAgICAgICAgICAgICAgICBpbnQgdDEgPSAocHRbal0uZmlyc3QtcHRbaV0uZmlyc3QpKihwdFttXS5zZWNvbmQtcHRbaV0uc2Vjb25kKTsKICAgICAgICAgICAgICAgICAgICBpbnQgdDIgPSAocHRbal0uc2Vjb25kLXB0W2ldLnNlY29uZCkqKHB0W21dLmZpcnN0LXB0W2ldLmZpcnN0KTsKICAgICAgICAgICAgICAgICAgICBpZih0MSA9PSB0MikgbWFzayB8PSAoMTw8KG0tMSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbWF0W2ldW2pdID0gbWFzazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmaWxsKG1uLCBtbisoMTw8biksIC0xKTsKICAgICAgICB0YXJnZXQgPSAoMTw8biktMTsKICAgICAgICBpZihuID09IDEpIHByaW50ZigiQ2FzZSAlZDogJWRcbiIsIGssIDEpOwogICAgICAgIGVsc2UgcHJpbnRmKCJDYXNlICVkOiAlZFxuIiwgaywgY2FsYygwKSk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K