""" from math import gcd from itertools import accumulate, combinations, permutations, product, count from bisect import bisect, bisect_left from collections import Counter, defaultdict, deque from heapq import heappush, heappop from functools import reduce from operator import add, mul, sub, truediv, floordiv, mod from sortedcontainers import SortedSet, SortedList, SortedDict from decimal import * getcontext().prec = 500 import string ascii = string.ascii_lowercase """ import numpy as np from scipy.sparse import csr_matrix from scipy.sparse.csgraph import dijkstra import sys def main(): input = lambda: sys.stdin.readline()[:-1] N, M = map(int, input().split()) X, Y = map(int, input().split()) _pq = np.array(list(input().split() for _ in [0] * N), dtype=np.int64) _PQ = np.array(list(input().split() for _ in [0] * M), dtype=np.int64) pq = np.transpose(_pq) PQ = np.transpose(_PQ) func = np.vectorize(lambda a, b: ((pq[0][a - 1] - pq[0][b - 1]) ** 2 + (pq[1][a - 1] - pq[1][b - 1]) ** 2) ** 0.5) dist = func(PQ[0], PQ[1]) csr = csr_matrix((dist, PQ), (N + 1, N + 1)) ans = dijkstra(csr, indices=X, directed=False) print(ans[Y]) if not __debug__: f = open(sys.argv[1], "r") sys.stdin = f # try: # sys.set_int_max_str_digits(100000) # except AttributeError: # pass main()