///TRAN THAI BAO :3
#include <iostream>
#include <cstdio>
#include <vector>
#include <deque>
using namespace std;
#define maxN 200007
#define oo 2000000000
int n, m, q;
vector<int>adj[maxN];
vector<int>adj2[maxN];
int maxD[maxN];;
bool banned[maxN] = {false};
void readData()
{
cin >> n >> m >> q;
for(int i = 1; i <= m; i++)
{
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj2[v].push_back(u);
}
}
void solveQuery()
{
int root, k;
cin >> root >> k;
for(int i = 1; i <= n; i++)
{
maxD[i] = -oo;
banned[i] = false;
}
for(int i = 0; i < k; i++)
{
int tmp;
cin >> tmp;
banned[tmp] = true;
}
maxD[root] = 0;
deque<int>q;
q.push_front(root);
while(!q.empty())
{
int u = q.front();
q.pop_front();
int v;
for(int i = 0; i < adj2[u].size(); i++)
{
v = adj2[u][i];
if(maxD[u] + 1 > maxD[v])
{
maxD[v] = maxD[u] + 1;
q.push_front(v);
}
}
}
int ans = -1;
for(int i = 1; i <= n; i++)
if(!banned[i])
ans = max(ans, maxD[i]);
cout << ans << '\n';
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
readData();
while(q--)
solveQuery();
return 0;
}