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);
}
}
}