#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n,m,a[2000002]={},b[2000002]={},ans=0,f;//初始化不用多说
cin>>m>>n;//mn不要输反
for (int i=0;i<m;i++){
cin>>a[i];
}
for (int j=0;j<n;j++){
cin>>b[j];
}//输入不用多说
sort(b,b+n);//排序是为了寻找击打敌方防御的最佳攻击系统
sort(a,a+m);
for (int i=0;i<m;i++){
f=0;//判断是否能攻击
for (int j=0;j<n;j++){
if (b[j]>a[i]){//题目里说是大于(tip:不打大于会错测试点)
b[j]=0;//击打完了它就用完了,所以设为0,让后面更方便,代码更少
f=1;
break;
}
}
if (!f){cout<<0;return 0;}//如果遍历完都不能击破,那一定破不了防,因此伤害为0(tip:不加也错测试点)
}
for (int i=0;i<n;i++){
ans+=b[i];//最后把剩余炮弹累加(这里就是把已发炮弹设为0的好处)
}
cout<<ans;
return 0;
}