n,m,k = map(int,raw_input().split())
graph = {}
for _ in range(m):
a,b = map(int,raw_input().split())
if a in graph:
graph[a].append(b)
else:
graph[a] = [b]
if b in graph:
graph[b].append(a)
else:
graph[b] = [a]
specialNodes = sorted(map(int,raw_input().split()))
isSpecial = [False for i in range(n+1)]
for specialNode in specialNodes:
isSpecial[specialNode] = True
minDist = n+1
for i in specialNodes:
visited = {}
visited[i] = True
stack = []
stackSize = 0
for child in graph[i]:
stack.append((child,1))
stackSize += 1
currentIndex = 0
while currentIndex < stackSize:
visited[stack[currentIndex][0]] = True
if isSpecial[stack[currentIndex][0]]:
minDist = min(stack[currentIndex][1],minDist)
break
elif stack[currentIndex][1] >= minDist:
break
else:
currentLevel = stack[currentIndex][1]
for child in graph[stack[currentIndex][0]]:
if not(child in visited):
stack.append((child,currentLevel+1))
stackSize += 1
currentIndex += 1
minRadius = (minDist-1)/2
ans = 0
visited = [False for i in range(n+1)]
def dfs(parentNode, currentNode, level):
global ans
if level > minRadius:
return
else:
ans += 1
visited[currentNode] = True
for child in graph[currentNode]:
if not(visited[child]):
dfs(currentNode,child,level+1)
for node in specialNodes:
dfs(-1,node,0)
print ans
bixtLGsgPSBtYXAoaW50LHJhd19pbnB1dCgpLnNwbGl0KCkpCmdyYXBoID0ge30KZm9yIF8gaW4gcmFuZ2UobSk6CiAgICBhLGIgPSBtYXAoaW50LHJhd19pbnB1dCgpLnNwbGl0KCkpCiAgICBpZiBhIGluIGdyYXBoOgogICAgICAgIGdyYXBoW2FdLmFwcGVuZChiKQogICAgZWxzZToKICAgICAgICBncmFwaFthXSA9IFtiXQogICAgaWYgYiBpbiBncmFwaDoKICAgICAgICBncmFwaFtiXS5hcHBlbmQoYSkKICAgIGVsc2U6CiAgICAgICAgZ3JhcGhbYl0gPSBbYV0Kc3BlY2lhbE5vZGVzID0gc29ydGVkKG1hcChpbnQscmF3X2lucHV0KCkuc3BsaXQoKSkpCmlzU3BlY2lhbCA9IFtGYWxzZSBmb3IgaSBpbiByYW5nZShuKzEpXQpmb3Igc3BlY2lhbE5vZGUgaW4gc3BlY2lhbE5vZGVzOgogICAgaXNTcGVjaWFsW3NwZWNpYWxOb2RlXSA9IFRydWUKIAptaW5EaXN0ID0gbisxCmZvciBpIGluIHNwZWNpYWxOb2RlczoKICAgIHZpc2l0ZWQgPSB7fQogICAgdmlzaXRlZFtpXSA9IFRydWUKICAgIHN0YWNrID0gW10KICAgIHN0YWNrU2l6ZSA9IDAKICAgIGZvciBjaGlsZCBpbiBncmFwaFtpXToKICAgICAgICBzdGFjay5hcHBlbmQoKGNoaWxkLDEpKQogICAgICAgIHN0YWNrU2l6ZSArPSAxCiAgICBjdXJyZW50SW5kZXggPSAwCiAgICB3aGlsZSBjdXJyZW50SW5kZXggPCBzdGFja1NpemU6CiAgICAgICAgdmlzaXRlZFtzdGFja1tjdXJyZW50SW5kZXhdWzBdXSA9IFRydWUKICAgICAgICBpZiBpc1NwZWNpYWxbc3RhY2tbY3VycmVudEluZGV4XVswXV06CiAgICAgICAgICAgIG1pbkRpc3QgPSBtaW4oc3RhY2tbY3VycmVudEluZGV4XVsxXSxtaW5EaXN0KQogICAgICAgICAgICBicmVhawogICAgICAgIGVsaWYgc3RhY2tbY3VycmVudEluZGV4XVsxXSA+PSBtaW5EaXN0OgogICAgICAgICAgICBicmVhawogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGN1cnJlbnRMZXZlbCA9IHN0YWNrW2N1cnJlbnRJbmRleF1bMV0KICAgICAgICAgICAgZm9yIGNoaWxkIGluIGdyYXBoW3N0YWNrW2N1cnJlbnRJbmRleF1bMF1dOgogICAgICAgICAgICAgICAgaWYgbm90KGNoaWxkIGluIHZpc2l0ZWQpOgogICAgICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZCgoY2hpbGQsY3VycmVudExldmVsKzEpKQogICAgICAgICAgICAgICAgICAgIHN0YWNrU2l6ZSArPSAxCiAgICAgICAgICAgIGN1cnJlbnRJbmRleCArPSAxCiAKbWluUmFkaXVzID0gKG1pbkRpc3QtMSkvMgphbnMgPSAwCnZpc2l0ZWQgPSBbRmFsc2UgZm9yIGkgaW4gcmFuZ2UobisxKV0KZGVmIGRmcyhwYXJlbnROb2RlLCBjdXJyZW50Tm9kZSwgbGV2ZWwpOgogICAgZ2xvYmFsIGFucwogICAgaWYgbGV2ZWwgPiBtaW5SYWRpdXM6CiAgICAgICAgcmV0dXJuCiAgICBlbHNlOgogICAgICAgIGFucyArPSAxCiAgICAgICAgdmlzaXRlZFtjdXJyZW50Tm9kZV0gPSBUcnVlCiAgICAgICAgZm9yIGNoaWxkIGluIGdyYXBoW2N1cnJlbnROb2RlXToKICAgICAgICAgICAgaWYgbm90KHZpc2l0ZWRbY2hpbGRdKToKICAgICAgICAgICAgICAgIGRmcyhjdXJyZW50Tm9kZSxjaGlsZCxsZXZlbCsxKQogCmZvciBub2RlIGluIHNwZWNpYWxOb2RlczoKICAgIGRmcygtMSxub2RlLDApCnByaW50IGFucw==