#include <vector>
#include <iostream>
#include <climits>
#include <algorithm>
using namespace std;
/*
Given three arrays, A, B, C, you can get three element a,b,c from each of them.
Find the minmum distance |a - b| + |b - c| + |c - a|
*/
int minDistance(vector<int>& num_1, vector<int>& num_2, vector<int>& num_3) {
int minDis = INT_MAX;
sort(num_1.begin(), num_1.end());
sort(num_2.begin(), num_2.end());
sort(num_3.begin(), num_3.end());
int m = num_1.size();
int n = num_2.size();
int k = num_3.size();
int i = 0, j = 0, l = 0;
while(i < m && j < n && l < k) {
int sum = abs(num_1[i] - num_2[j]) + abs(num_2[j] - num_3[l]) + abs(num_3[l] - num_1[i]);
minDis = min(minDis, sum);
int nextMin = min(num_1[i], min(num_2[j], num_3[k]));
if(nextMin == num_1[i]) i++;
else if(nextMin == num_2[j]) j++;
else k++;
}
return minDis;
}
int main(void) {
vector<int> num_1{2, 4, 5, 6};
vector<int> num_2{5, 10, 12};
vector<int> num_3{4, 13, 15};
int distance = minDistance(num_1, num_2, num_3);
cout << distance << endl;
}