#include <iostream>
#include <algorithm>
#include <cmath>

using namespace std;

const int MAX_M = 100000;
const int MAX_N = 100000;

// 二分查找最接近学生估分的学校分数线
int binarySearch(int schools[], int m, int score) {
    int left = 0, right = m - 1;
    while (left < right) {
        int mid = left + (right - left) / 2;
        if (schools[mid] < score) {
            left = mid + 1;
        } else {
            right = mid;
        }
    }
    // 找到最接近的分数线,考虑 left 为 0 和非 0 的情况
    int minDiff;
    if (left > 0) {
        minDiff = min(abs(schools[left] - score), abs(schools[left - 1] - score));
    } else {
        minDiff = abs(schools[left] - score);
    }
    return minDiff;
}

int main() {
    int m, n;
    // 读取学校数量 m 和学生数量 n
    cin >> m >> n;

    int schools[MAX_M];
    // 读取 m 个学校的预计录取分数
    for (int i = 0; i < m; i++) {
        cin >> schools[i];
    }
    // 对学校分数线进行排序
    sort(schools, schools + m);

    int students[MAX_N];
    // 读取 n 个学生的估分成绩
    for (int i = 0; i < n; i++) {
        cin >> students[i];
    }

    long long totalDissatisfaction = 0;
    // 遍历每个学生的估分
    for (int i = 0; i < n; i++) {
        // 调用二分查找函数找到最接近的分数线,计算不满意度
        int minDiff = binarySearch(schools, m, students[i]);
        // 累加该学生的不满意度
        totalDissatisfaction += minDiff;
    }

    // 输出最小的不满意度总和
    cout << totalDissatisfaction << endl;

    return 0;
}

/**************************************************************
	Problem: 1899
	User: chenjingqi
	Language: C++
	Result: Accepted
	Time:135 ms
	Memory:2736 kb
****************************************************************/