#include<bits/stdc++.h>
using namespace std;
const long long MaxK = 1e3+5, MaxM = 3e3+5;
long long n,m,k,ans=LLONG_MAX,p[MaxK], dis[MaxK][MaxK], visited[MaxK];
vector<long long> arr[MaxK];
pair<long long, long long> pr[MaxM];
void bfs(long long x, long long visited[], vector<long long> arr[])
{
    for (long long i=1; i<=n; i++)
    {
        visited[i]=false;
    }
    queue<long long> qu;
    qu.push(x);
    visited[x]=true;
    while(!qu.empty())
    {
        long long u = qu.front();
        qu.pop();
        for(long long v : arr[u])
        {
            if(!visited[v])
            {
                dis[x][v]=dis[x][u]+1;
                visited[v]=true;
                qu.push(v);
            }
        }
    }
}
void input()
{
    cin >> n >> m >> k;
    for (long long i=1; i<=k; i++)
    {
        cin>> p[i];
    }
    for (long long i=1; i<=m; i++)
    {
        long long u,v;
        cin >> u >> v;
        arr[u].push_back(v);
        arr[v].push_back(u);
        pr[i]={u,v};
    }
}
void solve()
{
    for (long long i=1; i<=n; i++)
    {
        bfs(i,visited,arr);
    }
    for (long long i=1; i<=m; i++)
    {
        long long u = pr[i].first, v=pr[i].second, cnt= 0;
        for (long long i=1; i<=k; i++)
        {
            cnt += min(dis[u][p[i]],dis[v][p[i]]);
        }
        ans=min(ans,cnt);
    }
    cout << ans;
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    input();
    solve();
    return 0;
}