#include <bits/stdc++.h>
#define control cout<<"e ne"<<endl;
#define endl '\n'
using namespace std;
int n,m,Q,t,y,u[131072],used[131072],x,mx,dp[131072];
vector <int> v[131072],v1[131072];
void speed()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
}
void dfs(int beg)
{
used[beg]=1;
for(auto nb:v[beg])
{
if(!used[nb])dfs(nb);
if(dp[nb])
{
dp[beg]=max(dp[beg],dp[nb]+1);
}
}
}
void solve()
{
cin>>n>>m>>Q;
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
v[x].push_back(y);
}
cin>>t>>y;
for(int i=1;i<=y;i++)
{
cin>>x;
u[x]=1;
}
dp[t]=1;
for(int i=1;i<=n;i++)
{
if(i!=t)
{
if(!used[i])
{
dfs(i);
}
}
}
mx=-1;
for(int i=1;i<=n;i++)
{
if(!u[i])mx=max(mx,dp[i]-1);
}
cout<<mx<<endl;
}
signed main()
{
/*
#ifdef ONLINE_JUDGE
freopen("txt.in","r",stdin)
freopen("txt.out","w",stdout)
#endif
*/
speed();
//int t; cin>>t; while(t--)
solve();
return 0;
}
/*
5 6 3
1 2
2 4
3 4
1 3
3 5
4 5
4 1 1
12 17 10
1 2
2 3
3 4
1 5
2 6
3 7
4 8
5 6
6 7
7 8
5 9
6 10
7 11
8 12
9 10
10 11
11 12
6 3 1 7 12
*/