#include <bits/stdc++.h>
int x[101000], y, i, K, n;
double Ans, Dis;
long long Min(long long a, long long b) { return a < b ? a : b; }
int main() {
  scanf("%d%d", &n, &K);
  K--;
  for (i = 0; i <= n; i++) scanf("%d", x + i);
  scanf("%d", &y);
  if (K == n)
    K = 1000000000;
  else
    K = x[K];
  std::sort(x, x + n);
  for (i = 0; i < n; i++)
    if (K == x[i]) break;
  K = i;
  Ans = 1000000000;
  if (K == n) {
    Ans = sqrt(Min(1ll * (x[K] - x[0]) * (x[K] - x[0]) + 1ll * y * y,
                   1ll * (x[K] - x[n - 1]) * (x[K] - x[n - 1]) + 1ll * y * y));
    Ans += x[n - 1] - x[0];
  } else {
    for (i = 0; i < n; i++) {
      if (i <= K) {
        Dis = 1.0 * (x[K] - x[i]) + 1.0 * (x[n - 1] - x[i]) +
              sqrt(1ll * (x[n] - x[n - 1]) * (x[n] - x[n - 1]) + 1ll * y * y);
        if (Dis > 1.0 * (x[n - 1] - x[K]) + 1.0 * (x[n - 1] - x[i]) +
                      sqrt(1ll * (x[n] - x[i]) * (x[n] - x[i]) + 1ll * y * y))
          Dis = 1.0 * (x[n - 1] - x[K]) + 1.0 * (x[n - 1] - x[i]) +
                sqrt(1ll * (x[n] - x[i]) * (x[n] - x[i]) + 1ll * y * y);
        if (i)
          Dis += sqrt(Min(
                     1ll * (x[n] - x[i - 1]) * (x[n] - x[i - 1]) + 1ll * y * y,
                     1ll * (x[n] - x[0]) * (x[n] - x[0]) + 1ll * y * y)) +
                 1.0 * (x[i - 1] - x[0]);
        if (Ans > Dis) Ans = Dis;
      }
      if (K <= i) {
        Dis = 1.0 * (x[i] - x[K]) + 1.0 * (x[i] - x[0]) +
              sqrt(1ll * (x[n] - x[0]) * (x[n] - x[0]) + 1ll * y * y);
        if (Dis > 1.0 * (x[K] - x[0]) + 1.0 * (x[i] - x[0]) +
                      sqrt(1ll * (x[n] - x[i]) * (x[n] - x[i]) + 1ll * y * y))
          Dis = 1.0 * (x[K] - x[0]) + 1.0 * (x[i] - x[0]) +
                sqrt(1ll * (x[n] - x[i]) * (x[n] - x[i]) + 1ll * y * y);
        if (i != n - 1)
          Dis +=
              sqrt(Min(
                  1ll * (x[n] - x[i + 1]) * (x[n] - x[i + 1]) + 1ll * y * y,
                  1ll * (x[n] - x[n - 1]) * (x[n] - x[n - 1]) + 1ll * y * y)) +
              1.0 * (x[n - 1] - x[i + 1]);
        if (Ans > Dis) Ans = Dis;
      }
    }
  }
  printf("%.8lf\n", Ans);
  return 0;
}
