#include<bits/stdc++.h>
using namespace std;

int intpow(int x,int y){
  double a=x,b=y;
  return pow(a,b);
}//(x,y) xをy乗する

int intfabs(int x){
  double a=x;
  return fabs(a);
}//(x) の絶対値

int in(){
  int a;
  cin >> a;
  return a;
}//int型関数の受け取り

void forin(int* x,int y){
  for (int i=0;i<y;i++){
    cin >> x[i];
  }
}//配列の受け取り

int tree(int,vector<int>*,int,int*);

main(){
  int n=in(),a[3],mp=0;
  forin(a,3);
  vector<int> l(n);
  for (int i=0;i<n;i++) cin >> l[i];
  sort(l.begin(),l.end());
  for (int t=3;t>0;t--){
    mp+=tree(t,l,n,a);
  }
  cout << mp << endl;
}

int tree(int t,int* l,int n,int* a){
  int mp=0;
  for (int i=0;true;i++){
    if (l[i]==a[t]){
      l[i]=-1;
      break;
    }
    else if (l[i]>a[t]){
      if (l[i]-a[t]<11 && a[t]-l[i-1]<11){
        mp+=min(l[i]-a[t],a[t]-l[i-1]);
        if (l[i]-a[t]>a[t]-l[i-1]) l[i-1]=-1;
        else (l[i]-a[t]<=a[t]-l[i-1]) l[i]=-1;
      }
      else {
        mp+=10;

        mp+=min(tree(t,l,n,a[t]-l[i-1]),tree(t,l,n,l[i]-a[t]));
      }
    }
  }
  return mp;
}