#include <bits/stdc++.h>
using namespace std;
map<string, int> MAP;
const int MAXN = 105;
int a[MAXN], b[MAXN];
int main() {
  int i, j;
  int n, m;
  while (scanf("%d %d", &n, &m) != EOF) {
    MAP.clear();
    for (i = 1; i <= n; i++) scanf("%d", &a[i]);
    sort(a + 1, a + n + 1);
    int tot = 0;
    char str[50];
    memset(b, 0, sizeof(b));
    for (j = 1; j <= m; j++) {
      scanf("%s", str);
      if (MAP[str] == 0) {
        MAP[str] = ++tot;
        b[tot]++;
      } else {
        b[MAP[str]]++;
      }
    }
    sort(b + 1, b + tot + 1);
    int ans1 = 0, ans2 = 0;
    for (i = tot, j = 1; i >= 1 && j <= tot; i--, j++) ans1 += a[i] * b[j];
    for (i = n, j = tot; i >= 1 && j >= 1; i--, j--) ans2 += a[i] * b[j];
    printf("%d %d\n", ans1, ans2);
  }
  return 0;
}
