#include <bits/stdc++.h>
using namespace std;
const int SZ = 1 << 17;
long long x[SZ];
long long xn_, yn_;
int n, k;
bool was[SZ];
double d[SZ];
double dist(int i) {
  if (was[i]) return d[i];
  was[i] = true;
  return d[i] = sqrt((xn_ - x[i]) * (xn_ - x[i]) + yn_ * yn_ + 0.0);
}
int p[6];
long long ABS(long long a) {
  if (a >= 0) return a;
  return -a;
}
bool b[5][5];
int arr[5];
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 0; i < n; ++i) scanf("%lld", &x[i]);
  long long x_ = x[k - 1];
  scanf("%lld%lld", &xn_, &yn_);
  sort(x, x + n);
  --k;
  if (k == n) {
    printf("%.15lf\n", min(dist(0), dist(n - 1)) + x[n - 1] - x[0]);
    return 0;
  }
  for (int i = 0; i < n; ++i)
    if (x[i] == x_) k = i;
  double res = 1e100;
  double lres;
  for (int i = 0; i < n - 1; ++i) {
    p[0] = k;
    p[1] = 0;
    p[2] = i;
    p[3] = i + 1;
    p[4] = n - 1;
    p[5] = n;
    arr[0] = i;
    arr[1] = i + 1;
    arr[2] = k;
    arr[3] = 0;
    arr[4] = n - 1;
    sort(arr, arr + 5);
    int cur;
    do {
      memset(b, 0, sizeof(b));
      lres = 0;
      for (int j = 1; j < 6; ++j) {
        if (p[j - 1] == n && p[j] == n) continue;
        if (p[j - 1] == n)
          lres += dist(p[j]);
        else if (p[j] == n)
          lres += dist(p[j - 1]);
        else {
          int i1 = find(arr, arr + 5, p[j - 1]) - arr;
          int i2 = find(arr, arr + 5, p[j]) - arr;
          b[i1][i2] = b[i2][i1] = 1;
          lres += ABS(x[p[j - 1]] - x[p[j]]);
        }
      }
      bool valid = true;
      for (int j = 1; j < 5; ++j)
        if (arr[j] - arr[j - 1] >= 2) {
          bool t = false;
          for (int k = 0; k < j; ++k)
            for (int kk = j; kk < 5; ++kk) t = t || b[k][kk];
          valid = valid && t;
        }
      if (valid) res = min(res, lres);
    } while (next_permutation(p + 1, p + 6));
  }
  lres = dist(n - 1) + ABS(x[0] - x[k]) + ABS(x[n - 1] - x[0]);
  res = min(res, lres);
  lres = dist(0) + ABS(x[n - 1] - x[k]) + ABS(x[n - 1] - x[0]);
  res = min(res, lres);
  printf("%.15lf\n", res);
  return 0;
}
