import sys input=sys.stdin.readline sys.setrecursionlimit(10**6) import heapq ans=2<<28 def dfs(G,v,used,goal,cost): global ans if v==goal: ans=min(ans,cost) return used[v]=True for i in G[v]: if used[i[1]]: continue dfs(G,i[1],used,goal,cost+i[0]) used[v]=False def main(): n,m=map(int,input().split()) x,y=map(int,input().split()) x,y=x-1,y-1 l=[tuple(int(i) for i in input().split()) for _ in range(n)] g=[[] for _ in range(n)] visited=[False]*n for _ in range(m): p,q=map(int,input().split()) p,q=p-1,q-1 dis=((l[q][0]-l[p][0])**2+(l[q][1]-l[p][1])**2)**0.5 g[p].append((dis,q)) g[q].append((dis,p)) dfs(g,x,visited,y,0) print(ans) if __name__=="__main__": main()