#include <bits/stdc++.h>
using namespace std;
const int maxn=2009;
int n,k;
string s;
int qmax[maxn],qmin[maxn];
int flag=0,val[maxn],vis[maxn][10],maxx=0,minn=1e9;
string a[11]={ "1110111", "0010010", "1011101", "1011011", "0111010", "1101011", "1101111", "1010010", "1111111", "1111011"};
int work(string s,string w)
{
int ans=0;
for(int i=0;i<7;i++)
if(w[i]=='0'&&s[i]=='1') return -1;
else if(w[i]!=s[i]) ans++;
return ans;
}
int ans[maxn],dp[maxn][maxn];
bool conflag=false;
void dfs(int now,int hua)
{
if(now==n+1)
{
if(hua==k)
conflag=true;
return;
}
if(conflag) return;
if(dp[now][hua]==-1) return;
for(int i=9;i>=0;i--)
{
if(vis[now][i]==-1) continue;
if(hua+vis[now][i]>k) continue;
int remain=(k-hua-vis[now][i]);
if(remain>qmax[now+1]) continue;
if(remain<qmin[now+1]) continue;
ans[now]=i;
dfs(now+1,hua+vis[now][i]);
if(conflag) return;
dp[now][hua]=-1;//不能成功,说明失败
}
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>s;
int ok=0;
for(int j=0;j<=9;j++)
{
vis[i][j]=work(s,a[j]);
if(vis[i][j]!=-1) ok=1;
}
if(ok==0) flag=1;
}
if(flag) {cout<<-1;return 0;}
for(int i=n;i>=1;i--)
{
maxx=0,minn=1e9;
for(int j=0;j<=9;j++)
{
if(vis[i][j]==-1) continue;
maxx=max(maxx,vis[i][j]);
minn=min(minn,vis[i][j]);
}
qmax[i]=qmax[i+1]+maxx;
qmin[i]=qmin[i+1]+minn;
}
dfs(1,0);
if(!conflag){cout<<-1;return 0;}
for(int i=1;i<=n;i++) cout<<ans[i];
}
#include <bits/stdc++.h>
using namespace std;
const int maxn=2009;
string s[101]={"1110111", "0010010", "1011101", "1011011", "0111010", "1101011", "1101111", "1010010", "1111111", "1111011"};
string in;
int n,K,val[maxn],dval[maxn];
bool f[maxn][maxn];
int main()
{
cin>>n>>K;
for(int i=0;i<=9;i++)
for(int j=0;j<7;j++)
if(s[i][j]-'0') val[i]|=(1<<(7-j-1));
for(int i=1;i<=n;i++)
{
cin>>in;
for(int j=0;j<7;j++)
if(in[j]-'0') dval[i]|=(1<<(7-j-1));
}
f[n+1][0]=1;
for(int i=n;i>=1;i--)
for(int j=0;j<=9;j++)
{
if((val[j]&dval[i])==dval[i])
{
int w=(val[j]^dval[i]),num=0;
for(int k=0;k<7;k++)
if(w&(1<<k)) num++;
for(int k=num;k<=K;k++)
f[i][k]|=f[i+1][k-num];
}
}
if(!f[1][K]){
cout<<-1;
return 0;
}
for(int i=1;i<=n;i++)
for(int j=9;j>=0;j--)
{
if((val[j]&dval[i])==dval[i])
{
int w=(val[j]^dval[i]),num=0;
for(int k=0;k<7;k++)
if(w&(1<<k)) num++;
if(f[i+1][K-num])
{
cout<<j;
K-=num;
break;
}
}
}
return 0;
}