```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
line := strings.Fields(scanner.Text())
n, _ := strconv.Atoi(line[0])
m, _ := strconv.Atoi(line[1])
scanner.Scan()
line = strings.Fields(scanner.Text())
prices := make([]int, n)
for i := 0; i < n; i++ {
prices[i], _ = strconv.Atoi(line[i])
}
freq := make(map[string]int)
for i := 0; i < m; i++ {
scanner.Scan()
s := scanner.Text()
freq[s]++
}
counts := make([]int, 0, len(freq))
for _, v := range freq {
counts = append(counts, v)
}
k := len(counts)
sort.Sort(sort.Reverse(sort.IntSlice(counts)))
sort.Ints(prices)
var minSum int64 = 0
var maxSum int64 = 0
for i := 0; i < k; i++ {
minSum += int64(counts[i]) * int64(prices[i])
maxSum += int64(counts[i]) * int64(prices[n-1-i])
}
fmt.Printf("%d %d\n", minSum, maxSum)
}
```