#include <cmath>
#include <iostream>
#include <map>
#include <vector>
#include <set>
#include <string>
#include <algorithm>
#include <stack>
#include <queue>
#include <cstring>
#include <cstdio>
#include <string>
#include <functional>

#define all(cont) cont.begin(), cont.end()
#define rall(cont) cont.end(), cont.begin()
#define tr(cont, it) for (typeof(cont.begin()) it = cont.begin() ; it != cont.end() ; it++)
#define FOR(i, j, k, l) for(int i=(j) ; i<(k) ; i+=(l))
#define rep(i, j) FOR(i, 0, j, 1)
#define rrep(i, j) FOR(i, j, -1, -1)

#define INF 1000000000

using namespace std;

typedef pair<int, int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<vi> vvi;
typedef long long ll;

int T;
ll N, L;
vector<ll> outlets, devices;

bool check(const vector<ll>& out2) {
    for (int i=0 ; i<N ; i++) {
        if (out2[i] != devices[i])
            return false;
    }
    return true;
}

void pv(vector<ll> v) {
    for (int i=0 ; i<N ; i++) {
        printf("%lld ", v[i]);
    }
    printf("\n");
}

int main() {
    scanf("%d", &T);
    for (int t=1 ; t<=T ; t++) {
        scanf("%lld %lld\n", &N, &L);
        outlets.assign(N, 0L);
        devices.assign(N, 0L);

        for (ll i=0 ; i<N ; i++) {
            for (ll j=0 ; j<L ; j++) {
                char temp; scanf("%c", &temp);
                if (temp == '1') outlets[i] |= (1L << (L - j - 1L));
            }
            scanf(" ");
        }
        scanf("\n");

        for (ll i=0 ; i<N ; i++) {
            for (ll j=0 ; j<L ; j++) {
                char temp; scanf("%c", &temp);
                if (temp == '1') devices[i] |= (1L << (L - j - 1L));
            }
            scanf(" ");
        }
        scanf("\n");

        sort(all(devices));

        int ans = 1e9;
        for (ll i=0 ; i<N ; i++) {
            ll flipped = devices[0] ^ outlets[i];
            if (__builtin_popcount(flipped) < ans) {
                vector<ll> outlets2 = outlets;
                for (ll k=0 ; k<N ; k++) {
                    outlets2[k] ^= flipped;
                }
                sort(all(outlets2));
                if (check(outlets2)) {
                    ans = __builtin_popcount(flipped);
                }
            }
        }

        printf("Case #%d: ", t);
        if (ans == 1e9) {
            printf("NOT POSSIBLE\n");
        }
        else {
            printf("%d\n", ans);
        }
    }
}