#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main () {
unsigned long long n,m,l,h,a,ii,b,licznik,min=0;
bool doroslosc=true;
vector<pair<int,int> >kappa;
cin >> n >> m;
unsigned long long tab[100*n],tab_minuta[100*n],tablica[100*n];
licznik=0;
for(int i=0;i<n;i++){
cin >> l;
for(int j=0;j<l;j++){
cin >> tab[licznik];
tab_minuta[licznik]=i+2;
kappa.push_back(make_pair(tab[licznik],i+2));
licznik++;
}
}
std::vector<int> v(tab,tab+8);
std::sort (v.begin(), v.end());
for(int i=0;i<m;i++){
cin >> a;
std::vector<int>::iterator low,up;
low=std::lower_bound (v.begin(), v.end(), a);
up= std::upper_bound (v.begin(), v.end(), a);
tablica[i] = (low- v.begin()) - 1;
if(low- v.begin() > licznik){
doroslosc=false;
break;
}
}
if(!doroslosc){
cout << "-1" << endl;
}
else{
sort (kappa.begin(),kappa.end());
for(int i=0;i<m;i++){
if(min<kappa[tablica[i]].second) min = kappa[tablica[i]].second;
}
cout << min << endl;
}
return 0;
}