#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define El_Hefnawys \
ios_base::sync_with_stdio(false); \
cin.tie(nullptr); \
cout.tie(nullptr)
typedef long long ll;
typedef unsigned long long ull;
typedef vector<vector<ll> > GRAPH;
const ll MOD = 1e9 + 7;
const ll OO = 1e18;
const double PI = acos(-1.0);
ll dx4[4] = {0, 1, 0, -1};
ll dy4[4] = {1, 0, -1, 0};
ll dx8[8] = {0, 0, 1, -1, 1, 1, -1, -1};
ll dy8[8] = {1, -1, 0, 0, 1, -1, 1, -1};
ll n, m;
ll dp[1 << 15];
map<ll, ll> mp;
ll sol(ll mask, ll cnt) {
if (cnt > 50000)
return OO;
if (mask == 0)
return 0;
auto& ret = dp[mask];
if (~ret)
return ret;
ret = OO;
for (ll i = 0; i < m; i++)
ret = min(ret, 1 + sol(mask ^ mp[i], cnt + 1));
return ret;
}
void solve(int i) {
mp.clear();
cin >> n >> m;
for (ll i = 0; i < m; i++) {
string s;
for (int j = 0; j < n; j++) {
int x;
cin >> x;
s += ('0' + x);
mp[i] = stoll(s, 0, 2);
}
}
memset(dp, -1, sizeof dp);
cout << "Case " << i << ": ";
ll ans = sol((1 << n) - 1, 0);
if (ans >= OO)
cout << "IMPOSSIBLE\n";
else
cout << ans << "\n";
}
signed main() {
El_Hefnawys;
// freopen("input.in", "r", stdin);
// freopen("output.out", "w", stdout);
ll t{1};
cin >> t;
for (int i = 1; i <= t; i++) {
solve(i);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+CiNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CgojZGVmaW5lIEVsX0hlZm5hd3lzICAgICAgICAgICAgICAgICAgIFwKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBcCiAgICBjaW4udGllKG51bGxwdHIpOyAgICAgICAgICAgICAgICAgXAogICAgY291dC50aWUobnVsbHB0cikKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGw7CgoKdHlwZWRlZiB2ZWN0b3I8dmVjdG9yPGxsPiA+IEdSQVBIOwoKY29uc3QgbGwgTU9EID0gMWU5ICsgNzsKY29uc3QgbGwgT08gPSAxZTE4Owpjb25zdCBkb3VibGUgUEkgPSBhY29zKC0xLjApOwoKbGwgZHg0WzRdID0gezAsIDEsIDAsIC0xfTsKbGwgZHk0WzRdID0gezEsIDAsIC0xLCAwfTsKCmxsIGR4OFs4XSA9IHswLCAwLCAxLCAtMSwgMSwgMSwgLTEsIC0xfTsKbGwgZHk4WzhdID0gezEsIC0xLCAwLCAwLCAxLCAtMSwgMSwgLTF9OwoKbGwgbiwgbTsKbGwgZHBbMSA8PCAxNV07Cm1hcDxsbCwgbGw+IG1wOwoKbGwgc29sKGxsIG1hc2ssIGxsIGNudCkgewogICAgaWYgKGNudCA+IDUwMDAwKQogICAgICAgIHJldHVybiBPTzsKICAgIGlmIChtYXNrID09IDApCiAgICAgICAgcmV0dXJuIDA7CiAgICBhdXRvJiByZXQgPSBkcFttYXNrXTsKICAgIGlmICh+cmV0KQogICAgICAgIHJldHVybiByZXQ7CiAgICByZXQgPSBPTzsKICAgIGZvciAobGwgaSA9IDA7IGkgPCBtOyBpKyspCiAgICAgICAgcmV0ID0gbWluKHJldCwgMSArIHNvbChtYXNrIF4gbXBbaV0sIGNudCArIDEpKTsKICAgIHJldHVybiByZXQ7Cn0KCnZvaWQgc29sdmUoaW50IGkpIHsKICAgIG1wLmNsZWFyKCk7CiAgICBjaW4gPj4gbiA+PiBtOwogICAgZm9yIChsbCBpID0gMDsgaSA8IG07IGkrKykgewogICAgICAgIHN0cmluZyBzOwogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgaisrKSB7CiAgICAgICAgICAgIGludCB4OwogICAgICAgICAgICBjaW4gPj4geDsKICAgICAgICAgICAgcyArPSAoJzAnICsgeCk7CiAgICAgICAgICAgIG1wW2ldID0gc3RvbGwocywgMCwgMik7CiAgICAgICAgfQogICAgfQogICAgbWVtc2V0KGRwLCAtMSwgc2l6ZW9mIGRwKTsKICAgIGNvdXQgPDwgIkNhc2UgIiA8PCBpIDw8ICI6ICI7CiAgICBsbCBhbnMgPSBzb2woKDEgPDwgbikgLSAxLCAwKTsKICAgIGlmIChhbnMgPj0gT08pCiAgICAgICAgY291dCA8PCAiSU1QT1NTSUJMRVxuIjsKICAgIGVsc2UKICAgICAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwp9CgpzaWduZWQgbWFpbigpIHsKICAgIEVsX0hlZm5hd3lzOwogICAgLy8gZnJlb3BlbigiaW5wdXQuaW4iLCAiciIsIHN0ZGluKTsKICAgIC8vIGZyZW9wZW4oIm91dHB1dC5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICBsbCB0ezF9OwogICAgY2luID4+IHQ7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSB0OyBpKyspIHsKICAgICAgICBzb2x2ZShpKTsKICAgIH0KICAgIHJldHVybiAwOwp9