#include #include #include #include using namespace std; long long n,k,a[101],p[101],e,m,g,br,i,time1; string s[101]; void check_str() { for(long long i=2; i<=n; i++) { int g1=0; for(long long j=1; j<=k; j++) { g1^=(s[i][a[j]]-'0'); } if(g1!=p[i]) {e=1; return ;} } } void form_string(long long t, long long j) { if(j>m&&t>0) return ; else if(t==0&&g==p[1]) {e=0; time1+=n*m; check_str(); if(e==1) e=0; else e=1; return ;} for(long long i=j+1; i<=m-1; i++) { time1++; a[++br]=i; int g1=g; g^=(s[1][i]-'0'); form_string(t-1,i); if(time1>100000000) {return ;} if(e==1) return ; br--; g=g1; } } int main() { ifstream cin; ofstream cout; cin.open("bits.in"); cout.open("bits.out"); cin>>n>>k; for(i=1; i<=n; i++) { cin>>s[i]; m=s[i].size(); cin>>p[i]; } for(i=k; i>=1; i--) { form_string(i,-1); if(e==1) break; } if(e==0) {cout<<-1<