```go
package main
import (
"fmt"
"sort"
)
func main() {
var n, k int
fmt.Scan(&n, &k)
a := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Scan(&a[i])
}
var s string
fmt.Scan(&s)
var total int64 = 0
for i := 0; i < n; {
j := i
var group []int64
char := s[i]
for ; j < n && s[j] == char; j++ {
group = append(group, a[j])
}
l := len(group)
if l <= k {
for _, v := range group {
total += v
}
} else {
sort.Slice(group, func(x, y int) bool {
return group[x] < group[y]
})
for t := l - k; t < l; t++ {
total += group[t]
}
}
i = j
}
fmt.Println(total)
}
```