#include <bits/stdc++.h>
using namespace std;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
long long int myRand(long long int B) { return (unsigned long long)rng() % B; }
int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  int n, m;
  cin >> n >> m;
  vector<long long int> a(n), b(m);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < m; i++) {
    cin >> b[i];
  }
  sort(a.begin(), a.end());
  sort(b.begin(), b.end());
  long long int res = 0;
  if (a[n - 1] > b[0]) {
    printf("-1\n");
    return 0;
  }
  for (int i = 0; i < m; i++) {
    res += b[i];
  }
  if (b[0] == a[n - 1]) {
    res += a[n - 2] * (long long int)(m);
    for (int i = 0; i < n - 2; i++) {
      res += a[i] * (long long int)m;
    }
  } else {
    res += a[n - 1];
    res += a[n - 2] * (long long int)(m - 1);
    for (int i = 0; i < n - 2; i++) {
      res += a[i] * (long long int)m;
    }
  }
  printf("%lld\n", res);
}
