#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define pb push_back
#define endl '\n'
#define sz(x) (int)x.size()
//#define all(x) x.begin(), x.end()
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<pii, int> pip;
typedef unsigned long long ull;
const int mxn = 5e3+5;
const int mxm = 1e5+5;
const int MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const ll INFL = 0x3f3f3f3f3f3f3f3f;
// Returns -1 if a < b, 0 if a = b and 1 if a > b.
int cmp_double(double a, double b = 0, double eps = 1e-9) {
return a + eps > b ? b + eps > a ? 0 : 1 : -1;
}
typedef bitset<1502> bs;
bool gauss(vector<bs> &a, bs& ans, int n) {
int m = int(a.size()), c = 0;
bs pos; pos.set();
for (int j = n-1, i; j >= 0; --j) {
for (i = c; i < m; ++i)
if (a[i][j]) break;
if (i == m) continue;
swap(a[c], a[i]);
i = c++; pos[j] = 0;
for (int k = 0; k < m; ++k)
if (a[k][j] && k != i) a[k] ^= a[i];
} ans = pos;
for(int i = 0; i < m; ++i) {
int ac = 0;
for (int j = 0; j < n ; ++j) {
if (!a[i][j]) continue;
if (!pos[j]) pos[j] = 1, ans[j] = ac^a[i][n];
ac ^= ans[j];
}
if (ac != a[i][n]) return false;
}
return true;
}
signed cases(){
int n, k;
cin >> n >> k;
vector<bs> ab(k+1), tmp(n);
for(int i=0; i<n; i++){
string a;
cin >> a;
bs mask;
mask[k] = 1;
for(int j = k-1; j>=0; j--){
mask[j] = a[k - j - 1] - '0';
}
tmp[i] = mask;
}
for(int i=0; i<n; i++){
for(int j=0; j<=k; j++){
ab[j][i] = tmp[i][j];
}
}
bs ans;
if(gauss(ab, ans, k+1)){
vector<int> resp(n);
int cont = 0;
for(int i=0; i<n; i++){
if(ans[i]) {resp[i] = cont%2 + 1; cont++;}
}
if(!cont || cont&1){
cout << '*' << endl;
}else{
for(int i:resp) cout << i;
cout << endl;
}
}else{
cout << '*' << endl;
}
return 0;
}
signed main(){
ios_base::sync_with_stdio(false), cin.tie(nullptr);
int t=1;
//cin >> t;
for(int i=1; i<=t; i++){
//cout << "Case #" << i << ": ";
cases();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZiBmaXJzdAojZGVmaW5lIHMgc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgc3ooeCkgKGludCl4LnNpemUoKQovLyNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiBwYWlyPGludCwgaW50PiBwaWk7CnR5cGVkZWYgcGFpcjxwaWksIGludD4gcGlwOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGw7CmNvbnN0IGludCBteG4gPSA1ZTMrNTsKY29uc3QgaW50IG14bSA9IDFlNSs1Owpjb25zdCBpbnQgTU9EID0gMWU5Kzc7CmNvbnN0IGludCBJTkYgPSAweDNmM2YzZjNmOwpjb25zdCBsbCBJTkZMID0gMHgzZjNmM2YzZjNmM2YzZjNmOwoKLy8gUmV0dXJucyAtMSBpZiBhIDwgYiwgMCBpZiBhID0gYiBhbmQgMSBpZiBhID4gYi4KaW50IGNtcF9kb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiID0gMCwgZG91YmxlIGVwcyA9IDFlLTkpIHsKICAgIHJldHVybiBhICsgZXBzID4gYiA/IGIgKyBlcHMgPiBhID8gMCA6IDEgOiAtMTsKfQoKdHlwZWRlZiBiaXRzZXQ8MTUwMj4gYnM7CmJvb2wgZ2F1c3ModmVjdG9yPGJzPiAmYSwgYnMmIGFucywgaW50IG4pIHsKCWludCBtID0gaW50KGEuc2l6ZSgpKSwgYyA9IDA7CglicyBwb3M7IHBvcy5zZXQoKTsKCWZvciAoaW50IGogPSBuLTEsIGk7IGogPj0gMDsgLS1qKSB7CgkJZm9yIChpID0gYzsgaSA8IG07ICsraSkKCQkJaWYgKGFbaV1bal0pIGJyZWFrOwoJCWlmIChpID09IG0pIGNvbnRpbnVlOwoJCXN3YXAoYVtjXSwgYVtpXSk7CgkJaSA9IGMrKzsgcG9zW2pdID0gMDsKCQlmb3IgKGludCBrID0gMDsgayA8IG07ICsraykKCQkJaWYgKGFba11bal0gJiYgayAhPSBpKSBhW2tdIF49IGFbaV07Cgl9IGFucyA9IHBvczsKCWZvcihpbnQgaSA9IDA7IGkgPCBtOyArK2kpIHsKCQlpbnQgYWMgPSAwOwoJCWZvciAoaW50IGogPSAwOyBqIDwgbiA7ICsraikgewoJCQlpZiAoIWFbaV1bal0pIGNvbnRpbnVlOwoJCQlpZiAoIXBvc1tqXSkgcG9zW2pdID0gMSwgYW5zW2pdID0gYWNeYVtpXVtuXTsKCQkJYWMgXj0gYW5zW2pdOwoJCX0KCQlpZiAoYWMgIT0gYVtpXVtuXSkgcmV0dXJuIGZhbHNlOwoJfQoJcmV0dXJuIHRydWU7Cn0KCnNpZ25lZCBjYXNlcygpewogICAgaW50IG4sIGs7CiAgICBjaW4gPj4gbiA+PiBrOwogICAgdmVjdG9yPGJzPiBhYihrKzEpLCB0bXAobik7CiAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspewogICAgICAgIHN0cmluZyBhOwogICAgICAgIGNpbiA+PiBhOwogICAgICAgIGJzIG1hc2s7CiAgICAgICAgbWFza1trXSA9IDE7CiAgICAgICAgZm9yKGludCBqID0gay0xOyBqPj0wOyBqLS0pewogICAgICAgICAgICBtYXNrW2pdID0gYVtrIC0gaiAtIDFdIC0gJzAnOwogICAgICAgIH0KICAgICAgICB0bXBbaV0gPSBtYXNrOwogICAgfQogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKXsKICAgICAgICBmb3IoaW50IGo9MDsgajw9azsgaisrKXsKICAgICAgICAgICAgYWJbal1baV0gPSB0bXBbaV1bal07CiAgICAgICAgfQogICAgfQogICAgYnMgYW5zOwogICAgaWYoZ2F1c3MoYWIsIGFucywgaysxKSl7CiAgICAgICAgdmVjdG9yPGludD4gcmVzcChuKTsKICAgICAgICBpbnQgY29udCA9IDA7CiAgICAgICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKXsKICAgICAgICAgICAgaWYoYW5zW2ldKSB7cmVzcFtpXSA9IGNvbnQlMiArIDE7IGNvbnQrKzt9IAogICAgICAgIH0KICAgICAgICBpZighY29udCB8fCBjb250JjEpewogICAgICAgICAgICBjb3V0IDw8ICcqJyA8PCBlbmRsOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBmb3IoaW50IGk6cmVzcCkgY291dCA8PCBpOwogICAgICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICAgICAgfQogICAgfWVsc2V7CiAgICAgICAgY291dCA8PCAnKicgPDwgZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9CgpzaWduZWQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSksIGNpbi50aWUobnVsbHB0cik7CiAgICBpbnQgdD0xOwoKICAgIC8vY2luID4+IHQ7CgogICAgZm9yKGludCBpPTE7IGk8PXQ7IGkrKyl7CiAgICAgICAgLy9jb3V0IDw8ICJDYXNlICMiIDw8IGkgPDwgIjogIjsKICAgICAgICBjYXNlcygpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=