#include <iostream>
#include <algorithm>
#include <vector>
#include <climits>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int m, n;
    cin >> m >> n;
    
    vector<int> schools(m);
    vector<int> students(n);
    
    // 读取学校分数线
    for (int i = 0; i < m; ++i) {
        cin >> schools[i];
    }
    
    // 读取学生估分
    for (int i = 0; i < n; ++i) {
        cin >> students[i];
    }
    
    // 对学校分数线排序以便二分查找
    sort(schools.begin(), schools.end());
    
    long long total_dissatisfaction = 0;
    
    for (int student_score : students) {
        // 使用lower_bound找到第一个不小于学生分数的学校
        auto it = lower_bound(schools.begin(), schools.end(), student_score);
        
        int min_diff = INT_MAX;
        
        // 检查找到的学校
        if (it != schools.end()) {
            min_diff = abs(*it - student_score);
        }
        
        // 检查前一个学校(如果存在)
        if (it != schools.begin()) {
            min_diff = min(min_diff, abs(*(it - 1) - student_score));
        }
        
        total_dissatisfaction += min_diff;
    }
    
    cout << total_dissatisfaction << endl;
    
    return 0;
}
/**************************************************************
	Problem: 1899
	User: zhengzihao
	Language: C++
	Result: Accepted
	Time:95 ms
	Memory:3016 kb
****************************************************************/