const rl = require("readline").createInterface({ input: process.stdin });
const iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
const [row, tate] = (await readline()).split(" ").map(Number);
const matrix = [];
for (let i = 0; i < row; i++) {
matrix.push((await readline()).split(" ").map(Number));
}
const k = Number(await readline());
const nums = (await readline()).split(" ").map(Number);
const containVal = (arr, matrix) => {
const map = new Map();
for (let i = 0; i < arr.length; i++) {
map.set(arr[i], (map.get(arr[i]) || 0) + 1);
}
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
if (map.get(matrix[i][j]) > 0) {
map.set(matrix[i][j], map.get(matrix[i][j]) - 1);
}
if (map.get(matrix[i][j]) == 0) {
map.delete(matrix[i][j]);
}
}
}
return map.size == 0;
};
const findVal = () => {
const curMatrix = Array.from({ length: row }, () => []);
for (let i = 0; i < tate; i++) {
for (let j = 0; j < row; j++) {
curMatrix[j].push(matrix[j][i]);
}
if (containVal(nums, curMatrix)) {
return i + 1;
}
}
return -1;
};
console.log(findVal());
})();