import sys
# 能否合并
def ismerge(matin,mat2):
for c1,c2 in zip(matin,mat2):
if c1=='1' and c2=='1':
return 0
return 1
# 合并两个矩阵(求或),mat2>mat1
def merge(mat1 ,mat2):
res = ''
for c1,c2 in zip(mat1,mat2):
if c1=='1' or c2=='1':
res += '1'
else:
res += '0'
return res
# 判断矩阵是否填充完毕
def isfill(mat):
for c in mat:
if c=='0':
return 0
return 1
r, c ,q = map(int,input().split())
matin = ''.join([input() for _ in range(r)])
matji= []
for _ in range(q):
matji.append(''.join([input() for _ in range(r)]))
def dfs(matin,matji):
res = []
path = []
def back(mat,start):
if isfill(mat):
res.append(path.copy())
return
for i in range(start,q):
# 如果不能合并
if not ismerge(matin,matji[i]):
continue
mat1 = merge(mat,matji[i])
path.append(i+1)
back(mat1,i+1)
path.pop()
back(matin,0)
return res
res = dfs(matin,matji)
if not res:
print('-1')
else:
out = min(res,key=len)
# print(res)
print(len(out))
print(*out)