// 已经ac,只是差点一分钟提交

import java.util.Arrays;

import java.util.Scanner;

import java.util.TreeMap;



publicclass Main {


public static void main(String[] args) {


Scanner cin = new Scanner(System.in);

while(cin.hasNext()){

TreeMap<String, Integer> list = new TreeMap<>();

int n = cin.nextInt();

int m = cin.nextInt();

int[] price = new int[n];

int[] goods = new int[m];

for(int i=0;i<n;i++){

price[i] = cin.nextInt();

}

String temp = cin.nextLine();

for(int i=0;i<m;i++){

String good = cin.nextLine();

//System.out.println(good);

if(list.containsKey(good)){

list.put(good, list.get(good)+1);

//System.out.println("22");

}

else{

list.put(good,1);

}

}

// System.out.println(list.size());

int j=0;

int[] goodss = new int[list.size()];

for(String x : list.keySet()){

goodss[j++] = list.get(x);

}

m = j;

// System.out.println(m);

Arrays.sort(goodss);

Arrays.sort(price);

int minres = 0;

int maxres = 0;

j=0;

for(int i=m-1;i>=0;i--){

minres += price[j] * goodss[i];

// System.out.println(price[j]+" *** "+goodss[i]);

j++;

}

j = n-1;

for(int i=m-1;i>=0;i--){

maxres += price[j] * goodss[i];

// System.out.println(price[i]+" *** "+goodss[i]);

j--;

}

System.out.println(minres+" "+maxres);

}

}


}