//利用二进制进行遍历

#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]<<" ";

}

}

}