#include <bits/stdc++.h>
using namespace std;
using ll = long long int;

const ll mod1 = 1000000007LL;
const ll mod2 = 1000000009LL;
const ll base = 257LL;

struct hashed_string{
    public:
    string s; ll n;
    vector<pair<ll,ll>> prefix;
    vector<pair<ll,ll>> pow;

    hashed_string(string a){
        s = a; n = a.size();
        prefix.assign(n, {0,0});
        pow.assign(n+1, {0,0});
        pow[0] = {1,1};

        for (int i = 1; i <= n; i++){
            pow[i].first = (pow[i-1].first * base) % mod1;
            pow[i].second = (pow[i-1].second * base) % mod2;
        }

        ll sum1 = 0, sum2 = 0;

        for (int i = 0; i < n; i++){
            ll c = s[i] - 'a' + 1;

            sum1 = (sum1 * base + c) % mod1;
            sum2 = (sum2 * base + c) % mod2;

            prefix[i] = {sum1,sum2};
        }
    }

    hashed_string(){}

    pair<ll,ll> get_hash(ll l, ll r){
        ll x1 = prefix[r].first;
        ll x2 = prefix[r].second;

        if (l >= 1){
            x1 = (x1 - prefix[l-1].first * pow[r-l+1].first % mod1 + mod1) % mod1;
            x2 = (x2 - prefix[l-1].second * pow[r-l+1].second % mod2 + mod2) % mod2;
        }

        return {x1,x2};
    }
};

void solve(){
    ll n,k;
    cin >> n >> k;

    vector<string> l1(n);
    vector<hashed_string> v(n);

    for (int i = 0; i < n; i++) cin >> l1[i];

    if (k <= 2){
        for (int i = 0; i < n; i++) cout << (n >= 2 ? '1' : '0');
        cout << "\n";
        return;
    }

    for (int i = 0; i < n; i++) v[i] = hashed_string(l1[i]);

    string answ = "";
    vector<bool> good(n,true);

    if (n > k){
        vector<pair<pair<ll,ll>,ll>> dp[k][k];

        for (int i = 0; i < n; i++){
            for (int j = 0; j < k; j++){
                for (int x = j+1; x < k; x++){

                    ll sum1 = 0;
                    ll sum2 = 0;

                    if (j > 0){
                        auto h = v[i].get_hash(0,j-1);
                        sum1 = h.first;
                        sum2 = h.second;
                    }

                    if (x-j-1 >= 1){
                        sum1 = sum1 * v[i].pow[x-j-1].first % mod1;
                        sum2 = sum2 * v[i].pow[x-j-1].second % mod2;

                        auto h = v[i].get_hash(j+1,x-1);

                        sum1 = (sum1 + h.first) % mod1;
                        sum2 = (sum2 + h.second) % mod2;
                    }

                    if (k-x-1 >= 1){
                        sum1 = sum1 * v[i].pow[k-x-1].first % mod1;
                        sum2 = sum2 * v[i].pow[k-x-1].second % mod2;

                        auto h = v[i].get_hash(x+1,k-1);

                        sum1 = (sum1 + h.first) % mod1;
                        sum2 = (sum2 + h.second) % mod2;
                    }

                    dp[j][x].push_back({{sum1,sum2},i});
                }
            }
        }

        for (int i = 0; i < k; i++){
            for (int j = i+1; j < k; j++){

                sort(dp[i][j].begin(),dp[i][j].end());

                for (int x = 0; x < n; x++){

                    if (x >= 1 &&
                        dp[i][j][x-1].first == dp[i][j][x].first){
                        good[dp[i][j][x].second] = false;
                    }

                    if (x < n-1 &&
                        dp[i][j][x].first == dp[i][j][x+1].first){
                        good[dp[i][j][x].second] = false;
                    }
                }
            }
        }
    }
    else{
        for (int i = 0; i < n; i++){
            for (int j = 0; j < n; j++){
                if (i != j){
                    int cnt = 0;

                    for (int x = 0; x < k; x++){
                        cnt += (l1[i][x] != l1[j][x]);
                    }

                    if (cnt <= 2){
                        good[i] = false;
                    }
                }
            }
        }
    }

    for (int i = 0; i < n; i++){
        if (!good[i]) answ += '1';
        else answ += '0';
    }

    cout << answ << "\n";
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t;
    cin >> t;

    while (t--)
        solve();

    return 0;
}