/*
简单三分法解决,也可以排序后简单贪心.
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 100000 + 100;
#define LL long long
int n,m;
LL a[maxn],b[maxn];
bool cmp(int a,int b)
{
return a>b;
}
LL F(LL v)
{
LL cnt=0;
for(int i=0;i<n;++i)
{
if(a[i]>=v) break;
else
{
cnt+=v-a[i];
}
}
for(int i=0;i<m;++i)
{
if(b[i]<=v) break;
else
{
cnt+=b[i]-v;
}
}
return cnt;
}
int main()
{
LL l,r;
scanf("%d%d",&n,&m);
for(int i=0;i<n;++i)
scanf("%lld",&a[i]);
for(int i=0;i<m;++i)
{
scanf("%lld",&b[i]);
}
sort(a,a+n);
sort(b,b+m,cmp);
if(a[0]>=b[0])
{
printf("0\n");
return 0;
}
l=a[0],r=b[0];
LL ans=0;
while(1)
{
if(r-l<=10)
{
ans=l;
for(LL i=l+1;i<=r;++i)
{
if(F(i)<F(ans))
ans=i;
}
break;
}
else
{
LL len = r-l+1;
LL m1 = l + len/3;
LL m2 = l + 2*len/3;
if(F(m1)<=F(m2)) r=m2;
else l=m1;
}
}
printf("%lld\n",F(ans));
return 0;
}