#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
int n,m,s,t,f,a,b;
int used[100200],st[100200];
vector<int> reb[100200];
queue<int> bf;
void bfs(){
    int tek;
    while(!bf.empty()){
        tek=bf.front();
        bf.pop();
        if (st[tek]>n+1){return;}
        for (int i=0;i<reb[tek].size();++i){
            if (st[tek]-used[reb[tek][i]]<t){}
            else{
                used[reb[tek][i]]=st[tek]+1;
                st[reb[tek][i]]=st[tek]+1;
                if (reb[tek][i]==f){return;}
                bf.push(reb[tek][i]);
            }
        }
    }
    return;
}
int main(){
    scanf("%d%d%d%d%d",&n,&m,&s,&t,&f);
    for (int i=0;i<m;++i){
        scanf("%d%d",&a,&b);
        reb[a].push_back(b);
        reb[b].push_back(a);
    }
    for (int i=0;i<t;++i){
        scanf("%d",&a);
        used[a]=i-t-1;
    }
    for (int i=1;i<=n;++i){st[i]=-1;used[i]=-200200;}
    st[s]=0;
    used[s]=0;
    bf.push(s);
    bfs();
    if (st[f]==-1){printf("NO\n");}
    else{printf("%d\n",st[f]);}
    return 0;
}
