//利用二进制进行遍历
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
int check(vector<string>&a,vector<vector<int>>ch,int n,int m){
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if((a[i][j]-'0')^ch[i][j]!=1){
return 0;
}
}
}
return 1;
}
int main(){
int n,m,q;
cin>>n>>m>>q;
vector<string>a1(n);
for(int i=0;i<n;i++){
cin>>a1[i];
}
int pan=1;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a1[i][j]!='1')pan=0;
}
}
if(pan){
cout<<0<<endl;
return 0;
}
vector<vector<string>>b(q,vector<string>(n));
for(int j=0;j<q;j++){
for(int i=0;i<n;i++){
cin>>b[j][i];
}
}
int min1=11;
vector<int>h;
for(int k=1;k<(1<<q);k++){
//方案
vector<vector<int>>ch(n,vector<int>(m,0));
int ans=0;
vector<int>mn;
for(int i=0;i<q;i++){
if((k>>i)&1==1){
ans++;
mn.push_back(i+1);
for(int j=0;j<n;j++){
for(int y=0;y<m;y++){
ch[j][y]=(b[i][j][y]-'0')|ch[j][y];
}
}
}
}
if(check(a1,ch,n,m)){
if(ans<min1){
min1=ans;
h=mn;
}
}
}
if(min1==11){
cout<<-1;
}
else{
cout<<min1<<endl;
for(int i=0;i<h.size();i++){
cout<<h[i]<<" ";
}
}
}



京公网安备 11010502036488号