#include <bits/stdc++.h>
int n, m, min, max, q, T[105], mlt[105];
char M[105][50];
void bsort(int[], int);
int main() {
  int i, j;
  char s[105];
  scanf("%d %d\n", &n, &m);
  for (i = 0; i < n; i++) scanf("%d ", &T[i]);
  q = 0;
  bsort(T, n);
  for (i = 0; i < m; i++) {
    scanf("%s\n", s);
    for (j = 0; j < q; j++)
      if (!strcmp(M[j], s)) {
        mlt[j]++;
        break;
      }
    if (j == q) {
      strcpy(M[q], s);
      q++;
      mlt[j] = 1;
    }
  }
  bsort(mlt, q);
  min = 0;
  max = 0;
  for (i = 0, j = q - 1; i < n && j >= 0; i++, j--) min += mlt[j] * T[i];
  for (i = n - 1, j = q - 1; j >= 0; i--, j--) max += mlt[j] * T[i];
  printf("%d %d\n", min, max);
  return 0;
}
void bsort(int a[], int x) {
  int ord, aux, i;
  do {
    ord = 1;
    for (i = 0; i < x - 1; i++)
      if (a[i] > a[i + 1]) {
        aux = a[i];
        a[i] = a[i + 1];
        a[i + 1] = aux;
        ord = 0;
      }
  } while (!ord);
}
