//NiceDuck
#include "bits/stdc++.h"
typedef long long ll;
using namespace std;
#define FILE "000"
#define foru(i,a,b) for(int i=(int)(a); i<=(int)(b); ++i)
#define ford(i,a,b) for(int i=(int)(a); i>=(int)(b); --i)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);
#define pb push_back
#define fi first
#define se second
#define pii pair<int,int>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define MOD 1000000007
#define el "\n"

const int MAX=5e5+5,INF=1e9;
int n,m,b,r,dist[MAX];
vector<int> adj[MAX];
vector<int> c;

int main()
{
    fastio
    #ifndef ONLINE_JUDGE
    freopen(FILE ".inp","r",stdin);
    freopen(FILE ".out","w",stdout);
    #endif // ONLINE_JUDGE
    
    cin>>n>>m>>b>>r;
    foru(i,1,n) dist[i]=INF;
    queue<int> q;
    foru(i,1,b) 
    {
        int x; cin>>x;
        dist[x]=0;
        q.push(x);
    }
    foru(i,1,r) 
    {
        int x; cin>>x;
        c.pb(x);
    }
    foru(i,1,m)
    {
        int u,v; cin>>u>>v;
        adj[u].pb(v); adj[v].pb(u);
    }
    while(!q.empty())
    {
        int u=q.front(); q.pop();
        for(int v:adj[u])
        {
            if(dist[v]>dist[u]+1)
            {
                dist[v]=dist[u]+1;
                q.push(v);
            }
        }
    }
    for(int x:c) cout<<dist[x]<<' '; 
    
    return 0;
}