// ABC119_C
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <tuple>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <stack>
#include <queue>
#include <algorithm>
#include <functional>  // std::greater<T>()
#include <utility>  // std::swap()
#include <numeric>  // accumulate(ALL(vec), 0)  0 は初期値
#include <bitset>  // static_cast<std::bitset<8>>
#include <sstream>  // std::stringstream
#include <cmath>
#include <climits>  // INT_MIN
#include <cctype>  // std::isdigit()
#include <iomanip>  // std::setprecision()
using namespace std;
using ll = long long;

#define REP(i, n) for (ll i=0; i < n; i++)  // 0 ~ n-1
#define MIN(vec) min_element(vec.begin(), vec.end())  // イテレータのため、値を取り出すときは * を先頭につける
#define MAX(vec) max_element(vec.begin(), vec.end())
#define IDX(vec, element_iter) distance((vec).begin(), element_iter)
#define SUM(vec) accumulate(vec.begin(), vec.end(), 0LL)  // 0 は初期値

ll obj_num = 3;

void dfs() {


}


int main() {
    // input
    ll N, A, B, C;  // A > B > C
    cin >> N >> A >> B >> C;
    vector<ll> vec(N);
    REP(i, N) cin >> vec[i];
    sort(vec.begin(), vec.end(), greater<>());  // int big -> small
    
    // calculation
    if (N == 3) {
        cout << abs(A - vec[0]) + abs(B - vec[1]) + abs(C - vec[2]) << "\n";
    } else if (N == 4) {
        // 使えるものが 4 本以上
        vector<ll> obj = {C, B, A}; // big -> small
        ll now, idx = 0, now_take, res = 0;
        
        REP(i, 3) {
            // 大きい目標から
            now = obj[i];
            while (now) {
                now_take = vec[idx];
                if (abs(now - now_take) <= 10) {
                    res += abs(now - now_take);
                    idx++;
                    break;
                } else {
                
                }
            }
        }
        
    }
    
    
    
    return 0;
}
