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)