#include<bits/stdc++.h>
using namespace std;
struct node{
int v,t;
};
vector<int> e[5001];
int rd[5001];
bool vis[5001];
queue<node> q;
int main(){
int n,k,p;
cin>>n>>k>>p;
k-=p;
if(k<=0){cout<<0;return 0;}
int x;
for(int i=1;i<=p;++i){
cin>>x;
q.push({x,1});
}
int r,v,s;
cin>>r;
for(int i=1;i<=r;++i){
cin>>v>>s;
for(int j=1;j<=s;++j){
cin>>p;
e[p].push_back(v);
rd[v]++;
}
}
int t;
while(!q.empty()){
v=q.front().v;
if(!vis[v]) vis[v]=1;
else{q.pop();continue;}
t=q.front().t;
for(int i=0;i<e[v].size();++i){
rd[e[v][i]]--;
k--;
if(!k){cout<<t+1;return 0;}
if(!rd[e[v][i]]) q.push({e[v][i],t+1});
}
q.pop();
}
cout<<-1;
return 0;
}
R198347769