d = {"r": "p", "s": "r", "p": "s"}

n, k = list(map(int, input().split()))

r, s, p = list(map(int, input().split()))

t = eval(input())

score = {"r": r, "s": s, "p": p}

d2 = {}

r = 0





def set_hand(l, k):

    if l + k < n:

        if {d.get(t[l - k]), d.get(t[l + k])} == {"r", "s"}:

            return "p"

        if {d.get(t[l - k]), d.get(t[l + k])} == {"r", "p"}:

            return "s"

        if {d.get(t[l - k]), d.get(t[l + k])} == {"p", "s"}:

            return "r"

        return t[l]

    else:

        return t[l]





for i in range(n):

    for l in range(i, n, k):

        if d2.get(l) is not None:

            break

        if l - k >= 0:

            if d2[l - k] == d.get(t[l]):

                d2[l] = set_hand(l, k)

            else:

                d2[l] = d.get(t[l])

                r += score[d2[l]]

        if l - k < 0:

            d2[l] = d.get(t[l])

            r += score[d2[l]]

print(r)

d = {"r": "p", "s": "r", "p": "s"}

n, k = list(map(int, input().split()))

r, s, p = list(map(int, input().split()))

t = eval(input())

score = {"r": r, "s": s, "p": p}

d2 = {}

r = 0





def set_hand(l, k):

    if l + k < n:

        if {d.get(t[l - k]), d.get(t[l + k])} == {"r", "s"}:

            return "p"

        if {d.get(t[l - k]), d.get(t[l + k])} == {"r", "p"}:

            return "s"

        if {d.get(t[l - k]), d.get(t[l + k])} == {"p", "s"}:

            return "r"

        return t[l]

    else:

        return t[l]





for i in range(k):

    for l in range(i, n, k):

        if l - k >= 0:

            if d2[l - k] == d.get(t[l]):

                d2[l] = set_hand(l, k)

            else:

                d2[l] = d.get(t[l])

                r += score[d2[l]]

        if l - k < 0:

            d2[l] = d.get(t[l])

            r += score[d2[l]]

print(r)

d = {"r": "p", "s": "r", "p": "s"}
n, k = list(map(int, input().split()))
r, s, p = list(map(int, input().split()))
t = eval(input())
score = {"r": r, "s": s, "p": p}
d2 = {}
r = 0


def set_hand(l, k):
    if l + k < n:
        if {d.get(t[l - k]), d.get(t[l + k])} == {"r", "s"}:
            return "p"
        if {d.get(t[l - k]), d.get(t[l + k])} == {"r", "p"}:
            return "s"
        if {d.get(t[l - k]), d.get(t[l + k])} == {"p", "s"}:
            return "r"
        return t[l]
    else:
        return t[l]


for i in range(n):
    for l in range(i, n, k):
        if d2.get(l) is not None:
            break
        if l - k >= 0:
            if d2[l - k] == d.get(t[l]):
                d2[l] = set_hand(l, k)
            else:
                d2[l] = d.get(t[l])
                r += score[d2[l]]
        if l - k < 0:
            d2[l] = d.get(t[l])
            r += score[d2[l]]
print(r)

d = {"r": "p", "s": "r", "p": "s"}
n, k = list(map(int, input().split()))
r, s, p = list(map(int, input().split()))
t = eval(input())
score = {"r": r, "s": s, "p": p}
d2 = {}
r = 0


def set_hand(l, k):
    if l + k < n:
        if {d.get(t[l - k]), d.get(t[l + k])} == {"r", "s"}:
            return "p"
        if {d.get(t[l - k]), d.get(t[l + k])} == {"r", "p"}:
            return "s"
        if {d.get(t[l - k]), d.get(t[l + k])} == {"p", "s"}:
            return "r"
        return t[l]
    else:
        return t[l]


for i in range(k):
    for l in range(i, n, k):
        if l - k >= 0:
            if d2[l - k] == d.get(t[l]):
                d2[l] = set_hand(l, k)
            else:
                d2[l] = d.get(t[l])
                r += score[d2[l]]
        if l - k < 0:
            d2[l] = d.get(t[l])
            r += score[d2[l]]
print(r)

-for i in range(n): +for i in range(k): -        if d2.get(l) is not None: -            break