#include <bits/stdc++.h>
using namespace std;
int N, K, xx, a[100005];
double X, Y, ans = 1e9;
int main() {
  scanf("%d%d", &N, &K);
  for (int i = 1; i <= N; i++) scanf("%d", &a[i]);
  scanf("%lf%lf", &X, &Y), xx = a[K], sort(a + 1, a + N + 1);
  if (K == N + 1) {
    printf("%.9lf\n", min(sqrt((a[1] - X) * (a[1] - X) + Y * Y),
                          sqrt((a[N] - X) * (a[N] - X) + Y * Y)) +
                          a[N] - a[1]);
    return 0;
  }
  for (int i = 1; i <= N; i++)
    if (a[i] == xx) {
      K = i;
      break;
    }
  for (int i = 1; i <= N; i++)
    if (K <= i)
      ans = min(
          ans, (a[i] - a[1] +
                min(a[i] - a[K] + sqrt((a[1] - X) * (a[1] - X) + Y * Y),
                    a[K] - a[1] + sqrt((a[i] - X) * (a[i] - X) + Y * Y))) +
                   (i + 1 > N
                        ? 0
                        : a[N] - a[i + 1] +
                              min(sqrt((a[i + 1] - X) * (a[i + 1] - X) + Y * Y),
                                  sqrt((a[N] - X) * (a[N] - X) + Y * Y))));
    else
      ans = min(
          ans, (a[N] - a[i + 1] +
                min(a[N] - a[K] + sqrt((a[i + 1] - X) * (a[i + 1] - X) + Y * Y),
                    a[K] - a[i + 1] + sqrt((a[N] - X) * (a[N] - X) + Y * Y))) +
                   (1 > i ? 0
                          : a[i] - a[1] +
                                min(sqrt((a[1] - X) * (a[1] - X) + Y * Y),
                                    sqrt((a[i] - X) * (a[i] - X) + Y * Y))));
  printf("%.9lf\n", ans);
}
