"use strict"
const create = () => {
    const input = require("fs").readFileSync("/dev/stdin", "utf8").trim().split("\n");
    const res = {
        "list": input, "index": 0, "max": input.length,
        "hasNext": function() {return this.index < this.max},
        "next": function() { if (!this.hasNext()) {throw "ArrayIndexOutOfBoundsException";}else{return this.list[this.index++];}}
    };
    return res;
}
const o = create();
const next = () => o.next()
const nextInt = () => parseInt(o.next())
const nextStrArray = () => o.next().split(" ")
const nextIntArray = () => o.next().split(" ").map(el => parseInt(el))
const nextCharArray = () => o.next().split("")
const hasNext = () => o.hasNext()
const myout = (...x) => console.log(...x)
const Main = () => {
    const [N, K] = nextIntArray()
    const [R,S,P] = nextIntArray()
    const T = next()
    const score = (char) => {
        if(char === 'r') return P
        if(char === 's') return R
        if(char === 'p') return S
    }
    let ans = 0
    for(let i = 0; i<K; i++){
        let game = []
        let pos = i
        while(pos<N){
            game.push(T[pos])
            pos += K
        }
        let sub = 0
        if(game.length > 0){
            for(let i = 0; i<game.length; i++){
                if(game[i] !== game[i-1]){
                    sub += score(game[i])
                } else if(game[i] == game[i-1]){
                    game[i] = "x"
                }
            }
        }
        ans += sub
    }
    console.log(ans)
}

Main()
