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

int main() {
    int N, M;
    while(cin >> N >> M, N) {
        vector<int> s(N), d(M);
        for(int i=0; i<N; ++i) {
            cin >> s[i];
        }
        for(int j=0; j<M; ++j) {
            cin >> d[j];
        }
        sort(d.begin(), d.end());
        vector<vector<int>> dp(M+1, vector<int>(1 << N, 1e9));
        vector<int> sum(1 << N);
        for(int S=0; S<1<<N; ++S) {
            for(int i=0; i<N; ++i) {
                if((S >> i) & 1) {
                    sum[S] += s[i];
                }
            }
        }
        dp[0][0] = 0;
        for(int i=1; i<=M; ++i) {
            for(int S=0; S<1<<N; ++S) {
                for(int j=0; j<N; ++j) {
                    dp[i-1][S | (1 << j)] = min(dp[i-1][S | (1 << j)], dp[i-1][S]);
                }
            }
            for(int S=0; S<1<<N; ++S) {
                dp[i][S] = min(dp[i][S], dp[i-1][S] + abs(d[i-1] - sum[S]));
            }
        }
        cout << *min_element(dp[M].begin(), dp[M].end()) << endl;
    }
}
