package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var n, k int
if _, err := fmt.Fscan(reader, &n, &k); err != nil {
return
}
cardCounts := make([]int, 100005)
for i := 0; i < n*k; i++ {
var c int
fmt.Fscan(reader, &c)
cardCounts[c]++
}
favCounts := make([]int, 100005)
for i := 0; i < n; i++ {
var f int
fmt.Fscan(reader, &f)
favCounts[f]++
}
h := make([]int, k+1)
for i := 1; i <= k; i++ {
fmt.Fscan(reader, &h[i])
}
dp := make([][]int, n+1)
for i := range dp {
dp[i] = make([]int, n*k+1)
}
for i := 1; i <= n; i++ {
for j := 0; j <= i*k; j++ {
for t := 0; t <= k && t <= j; t++ {
if j-t <= (i-1)*k {
if dp[i][j] < dp[i-1][j-t]+h[t] {
dp[i][j] = dp[i-1][j-t] + h[t]
}
}
}
}
}
totalJoy := 0
for val, p := range favCounts {
if p > 0 {
c := cardCounts[val]
maxJoy := 0
limit := c
if limit > p*k {
limit = p * k
}
for j := 0; j <= limit; j++ {
if dp[p][j] > maxJoy {
maxJoy = dp[p][j]
}
}
totalJoy += maxJoy
}
}
fmt.Println(totalJoy)
}