// 一番狂気を感じた #include using namespace std; // #include // using namespace atcoder; // using mint = modint998244353; using ll = long long; #define fix(x) fixed << setprecision(x) #define rep(i, n) for(int i = 0; i < n; ++i) #define all(x) (x).begin(),(x).end() templatebool chmin(T&a, const T&b){if(a>b){a=b;return 1;}return 0;} templatebool chmax(T&a, const T&b){if(a> n >> m; vector> g(n); rep(i,m){ int u,v; cin >> u >> v; --u, --v; g[u].emplace_back(v); g[v].emplace_back(u); } vector yiwiy9(n,false); int k; cin >> k; while(k--){ int a; cin >> a; yiwiy9[a-1] = true; } vector> dist(n,vector(5,INF)); dist[0][0] = 0; queue> que; que.emplace(0,0); while(que.size()){ auto [p,q] = que.front(); if(p==n-1){ cout << dist[p][q] << '\n'; return 0; } que.pop(); for(int x:g[p]){ int r = yiwiy9[x]?q+1:0; if(r>4) continue; if(chmin(dist[x][r], dist[p][q]+1)) que.emplace(x,r); } } cout << "-1\n"; return 0; }