/*
#include <stdio.h>
int n,k,arr[1010][35]={},q[10010]={},f=0,r=0,x,y,arr1[1010][2]={},pri[10010]={};
void push(int n)
{
r++;
q[r]=n;
return;
}
int pop()
{
f++;
return q[f];
}
void bfs(int a)
{
int z,e;
e=arr1[a][0];
for(int i=0;i<n;i++){
z=0;
for(int j=0;j<k;j++){
if(arr[a][j]!=arr[i][j]) z++;
}
if(z==1&&arr1[i][0]==0){
push(i);
arr1[i][0]=e+1;
arr1[i][1]=a+1;
}
}
}
int main()
{
scanf("%d %d",&n,&k);
for(int i=0;i<n;i++){
for(int j=0;j<k;j++){
scanf("%01d",&arr[i][j]);
}
}
scanf("%d %d",&x,&y);
x--;
y--;
push(x);
arr1[x][0]=1;
while(f!=r){
int k=pop();
bfs(k);
}
if(arr1[y][0]==0) printf("-1");
else{
pri[arr1[y][0]]=y+1;
for(int i=arr1[y][0]-1;i>0;i--){
for(int j=n;j>=0;j--){
if(arr1[q[j]][0]==i&&arr1[pri[i+1]-1][1]==q[j]+1){
pri[i]=q[j]+1;
break;
}
}
}
for(int i=1;i<=arr1[y][0];i++){
printf("%d ",pri[i]);
}
}
return 0;
}
*/
#include <stdio.h>
int n,k,m,arr[100010][35]={},q[100010]={},f=0,r=0,x,arr1[100010][2]={},pri[100010]={};
void push(int n)
{
r++;
q[r]=n;
return;
}
int pop()
{
f++;
return q[f];
}
void bfs(int a)
{
int z,e;
e=arr1[a][0];
for(int i=0;i<n;i++){
if(arr1[i][0]!=0) continue;
else{
z=0;
for(int j=0;j<k;j++){
if(arr[a][j]!=arr[i][j]) z++;
if(z>1) break;
}
if(z==1){
push(i);
arr1[i][0]=e+1;
arr1[i][1]=a+1;
}
}
}
}
void fg()
{
if(arr1[x][0]==0) printf("-1");
else{
pri[arr1[x][0]]=x+1;
for(int i=arr1[x][0]-1;i>0;i--){
for(int j=n;j>=0;j--){
if(arr1[q[j]][0]==i&&arr1[pri[i+1]-1][1]==q[j]+1){
pri[i]=q[j]+1;
break;
}
}
}
for(int i=1;i<=arr1[x][0];i++){
printf("%d ",pri[i]);
}
}
return ;
}
int main()
{
scanf("%d %d",&n,&k);
for(int i=0;i<n;i++){
for(int j=0;j<k;j++){
scanf("%01d",&arr[i][j]);
}
}
scanf("%d",&m);
push(0);
arr1[0][0]=1;
while(f!=r){
int qw=pop();
bfs(qw);
}
for(int as=0;as<m;as++) {
scanf("%d",&x);
x--;
fg();
printf("\n");
}
return 0;
}