#include <bits/stdc++.h>
using namespace std;
const int maxn=(1<<21)+10;
int n,m,f[21][maxn],lg[maxn],tr[maxn][2];
int main()
{
	scanf("%d%d",&n,&m);
	for(int j=0;j<=n;j++)
		for(int i=0;i<(1<<j);i++)
			scanf("%1d",&f[j][i^(1<<j)]);
	lg[0]=-1;
	for(int i=1;i<(1<<(n+1));i++) lg[i]=lg[i>>1]+1;
	for(int i=2;i<(1<<(n+1));i++)
		if((i>>(lg[i]-1))&1)
			tr[i][1]=i^(1<<lg[i]),tr[i][0]=tr[tr[i][1]][0];
		else
			tr[i][0]=i^(3<<(lg[i]-1)),tr[i][1]=tr[tr[i][0]][1];
	for(int j=n;j;j--)
		for(int i=(1<<j);i<(1<<(n+1));i++)
		{
			int k = i >> j, l = (i & ((1 << j) - 1)) ^ (1 << j);
			if(tr[l][0]) f[lg[tr[l][0]]][(((k << 1) ^ 1) << lg[tr[l][0]]) ^ tr[l][0]] += f[j][i];
			if(tr[l][1]) f[lg[tr[l][1]]][(((k << 1) ^ 0) << lg[tr[l][1]]) ^ tr[l][1]] += f[j][i];
			f[0][k] += f[j][i];
		}
	int ans=1;
	for(int i=2;i<(1<<(n+1));i++)
		if(f[0][i]>=m && lg[i]>lg[ans]) ans=i;
	int j=n;
	while((~ans>>j)&1) j--;
	while(j--) putchar(((ans>>j)&1)+'0');
	putchar('\n');
	return 0;
}