#include <bits/stdc++.h>
using namespace std;
const int MAX = 5 * 10000;
const int MOD = 1e9 + 7;
const double PI = 3.141592653589793238462643383279502884;
double dist_stand(double x1, double y1, double x2, double y2) {
  return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int dist_man(int x1, int y1, int x2, int y2) {
  return (abs(x1 - x2) + abs(y1 - y2));
}
int main() {
  long a, n;
  cin >> n >> a;
  vector<long> v;
  for (int i = 0; i < n; i++) {
    long x;
    cin >> x;
    v.push_back(x);
  }
  sort(v.begin(), v.end());
  if (v.size() == 1)
    cout << 0;
  else if (v.size() == 2) {
    cout << min(abs(a - v[0]), abs(a - v[1]));
  } else if (n == 3 && a == v[1]) {
    cout << min(abs(a - v[0]), abs(a - v[2]));
  } else {
    long dist;
    if (a <= v[0]) {
      dist = v[n - 2] - a;
      cout << dist;
    } else if (a >= v[n - 1]) {
      dist = a - v[1];
      cout << dist;
    } else if (a <= v[1] && a > v[0]) {
      long d1, d2, d3;
      d1 = abs(v[n - 1] - a);
      d2 = abs(a - v[0]) + v[n - 2] - v[0];
      d3 = abs(v[n - 2] - a) + (v[n - 2] - v[0]);
      cout << min(min(d1, d2), d3);
    } else if (a >= v[n - 2] && a < v[n - 1]) {
      long d1, d2, d3;
      d1 = abs(a - v[0]);
      d2 = abs(v[n - 1] - a) + v[n - 1] - v[1];
      d3 = abs(a - v[1]) + abs(v[n - 1] - v[1]);
      cout << min(min(d1, d2), d3);
    } else {
      long d1, d2, d3, d4;
      d1 = abs(a - v[0]) + (v[n - 2] - v[0]);
      d2 = abs(v[n - 1] - a) + (v[n - 1] - v[1]);
      d3 = abs(a - v[1]) + (v[n - 1] - v[1]);
      d4 = abs(v[n - 2] - a) + (v[n - 2] - v[0]);
      cout << min(min(d1, d2), min(d3, d4));
    }
  }
  cout << endl;
  return 0;
}
