#include<iostream>
#include<cstdio>
#include<cmath>
#include<bits/stdc++.h>
using namespace std;
long long n,m;
string a[30100];
long long mi[30100][30],ma[30100][30];
int check(int x)
{
for(int j = 1;j <= n;j++)
{
if(j == x) continue;
for(int k = 1;k <= m;k++)
{
if(mi[x][k] == ma[j][k]) return 0;
if(mi[x][k] > ma[j][k]) return 0;
if(mi[x][k] < ma[j][k]) break;
}
}
return 1;
}
int main()
{
//freopen("a.in","r",stdin);
//freopen("dict.out","w",stdout);
scanf("%d%d",&n,&m);
int maxn = -1;
for(int i = 1;i <= n;i++)
{
cin >> a[i];
int sum = a[i][0] - 'a' + 1;
maxn = max(maxn,sum);
}
if(n == 1 && m == 1)
{
cout << "1";
return 0;
}
for(int i = 1;i <=n;i++)
{
long long comp[30];
memset(comp,0,sizeof(comp));
for(int j = 0;j < m;j++)
{
int sum1 = a[i][j] - 'a' + 1;
comp[sum1]++;
}
int cnt = 1;
for(int j = 1;j <= 26;j++)
{
if(comp[j]!=0)
{
for(int h = 1;h <= comp[j];h++)
{
mi[i][cnt] = j;
cnt++;
}
}
}
cnt = 1;
for(int j = 26;j >= 1;j--)
{
if(comp[j]!=0){
for(int h = 1;h <= comp[j];h++)
{
ma[i][cnt] = j;
cnt++;
}
}
}
}
for(int i = 1;i <= n;i++)
{
if(check(i) == 1) cout << "1";
else if (check(i) == 0)cout << "0";
}
return 0;
}
/* for(int v = 1;v <= m;v++)
cout << mi[i][v] << " ";
cout<<endl;
for(int v = 1;v <= m;v++)
cout << ma[i][v]<< " ";
cout<<endl;
cout << endl;*/
/*
4 7
abandon
bananaa
baannaa
notnotn
*/
好奇这个代码的复杂度是O(n^2)还是O(n^2*m)的