#include using namespace std; using ll = long long; struct dcin{templatedcin&operator>>(T&x){return std::cin>>x,x--,*this;}}dcin; int main(){ ll n,m,k; cin >> n >> m; vector e(n,vector()); for(ll i = 0;i> u >> v; e[u].push_back(v); e[v].push_back(u); } cin >> k; vector iwai(n); for(ll i = 0;i> v; iwai[v] = true; } vector dp(5,vector(n,LLONG_MAX>>4)); dp[0][0] = 0; queue> q; q.emplace(0,0); while(q.size()){ auto[met,cur] = q.front(); q.pop(); for(ll to : e[cur]){ if(iwai[to] && met < 4){ if(dp[met][cur]+1 < dp[met+1][to]){ dp[met+1][to] = dp[met][cur]+1; q.emplace(met+1,to); } } if(!iwai[to]){ if(dp[met][cur]+1 < dp[0][to]){ dp[0][to] = dp[met][cur]+1; q.emplace(0,to); } } } } ll ans = LLONG_MAX; for(ll i = 0;i<5;i++)ans = min(ans,dp[i][n-1]); if(ans == (LLONG_MAX>>4))ans = -1; cout << ans << endl; }