#include<bits//stdc++.h>
using namespace std;
int N,K;
int A[66],R[66],B[66];
int sA[66],sR[66],sB[66];
int dp[61][61][6001];
const int off=3000;
inline int chmin(int&a,int b)
{
    if(a>b)a=b;
    return a;
}
int main()
{
    cin>>N>>K;
    for(int i=0;i<N;i++)cin>>A[i];
    sort(A,A+N);
    reverse(A,A+N);
    for(int i=0;i<K;i++)cin>>R[i];
    sort(R,R+K);
    reverse(R,R+K);
    for(int i=0;i<K;i++)cin>>B[i];
    sort(B,B+K);
    reverse(B,B+K);
    for(int i=0;i<N;i++)sA[i+1]=sA[i]+A[i];
    for(int i=0;i<K;i++)sR[i+1]=sR[i]+R[i];
    for(int i=0;i<K;i++)sB[i+1]=sB[i]+B[i];
    for(int i=0;i<=N;i++)for(int j=0;j<=K;j++)for(int k=-off;k<=off;k++)
    {
        dp[i][j][k+off]=1e9;
    }
    dp[0][0][off]=0;
    for(int i=0;i<N;i++)
    {
        for(int j=0;j<=K;j++)
        {
            for(int k=-off;k<=off;k++)
            {
                if(dp[i][j][k+off]==1000000000)continue;
                if(j<K)
                {
                    chmin(dp[i+1][j+1][k+off+R[j]-A[i]],dp[i][j][k+off]+(A[i]>R[j]?A[i]-R[j]:0));
                }
                int id=i-j;
                if(0<=id&&id<K)
                {
                    chmin(dp[i+1][j][k+off],dp[i][j][k+off]+(A[i]>B[id]?A[i]-B[id]:0));
                }
            }
        }
    }
    int ans=1e9;
    for(int i=0;i<=K;i++)
    {
        for(int j=-off;j<=off;j++)
        {
            int rrest=j+sR[K]-sR[i];
            int brest=-sA[N]+sR[K]+sB[K]-rrest;
            //if(dp[N][i][j+off]<1e9)cout<<"DBG : "<<rrest<<" "<<brest<<endl;
            if(0<=rrest&&0<=brest)
            {
                ans=min(ans,dp[N][i][j+off]);
            }
        }
    }
    cout<<(ans<1e9?ans:-1)<<endl;
}

