#############################
#
# じゃんけん説明
# r: グー
# s: チョキ
# p: パー
#
#############################
#
# 入力r -> 勝利時の グー の点数
# 入力s -> 勝利時の チョキ の点数
# 入力p -> 勝利時の パー の点数
#
#############################

n, k = map(int, input().split())
r, s, p = map(int, input().split())
t = input()

MY_HAND = []
ANS = 0

def can_not_use_hand(after_k_hand):
  if after_k_hand == 'r':
    return 'p'
  if after_k_hand == 's':
    return 'r'
  if after_k_hand == 'p':
    return 's'

for battle_time in range(n):
  if battle_time < k:
    if t[battle_time] == "r":
      MY_HAND.append("p")
      ANS += p
    
    if t[battle_time] == "s":
      MY_HAND.append("r")
      ANS += r
    
    if t[battle_time] == "p":
      MY_HAND.append("s")
      ANS += s
  else:
    if t[battle_time] == "r": # 基本 -> [p]
      if MY_HAND[battle_time-k] == "p" and (battle_time+k) <= n: # [p] を前に使ってる -> [r, s, -]
        if can_not_use_hand(t[battle_time+k]) == 'r':
          MY_HAND.append("s")
          ANS += 0
        else:
          MY_HAND.append("r")
          ANS += 0
      else: # 基本通り
        MY_HAND.append("p")
        ANS += p

    if t[battle_time] == "s": # 基本 -> [r]
      if MY_HAND[battle_time-k] == "r" and (battle_time+k) <= n: # [r] を前に使ってる -> [-, s, p]
        if can_not_use_hand(t[battle_time+k]) == 's':
          MY_HAND.append("p")
          ANS += 0
        else:
          MY_HAND.append("s")
          ANS += 0
      else: # 基本通り
        MY_HAND.append("r")
        ANS += r
    
    if t[battle_time] == "p": # 基本 -> [s]
      if MY_HAND[battle_time-k] == "s" and (battle_time+k) <= n: # [s] を前に使ってる -> [r, -, p]
        if can_not_use_hand(t[battle_time+k]) == 'p':
          MY_HAND.append("r")
          ANS += 0
        else:
          MY_HAND.append("p")
          ANS += 0
      else: # 基本通り
        MY_HAND.append("s")
        ANS += s

print(ANS)


### FIXED CODE ###

#############################
#
# じゃんけん説明
# r: グー
# s: チョキ
# p: パー
#
#############################
#
# 入力r -> 勝利時の グー の点数
# 入力s -> 勝利時の チョキ の点数
# 入力p -> 勝利時の パー の点数
#
#############################

n, k = map(int, input().split())
r, s, p = map(int, input().split())
t = input()

MY_HAND = []
ANS = 0

def can_not_use_hand(after_k_hand):
  if after_k_hand == 'r':
    return 'p'
  if after_k_hand == 's':
    return 'r'
  if after_k_hand == 'p':
    return 's'

for battle_time in range(n):
  if battle_time < k:
    if t[battle_time] == "r":
      MY_HAND.append("p")
      ANS += p
    
    if t[battle_time] == "s":
      MY_HAND.append("r")
      ANS += r
    
    if t[battle_time] == "p":
      MY_HAND.append("s")
      ANS += s
  else:
    if t[battle_time] == "r": # 基本 -> [p]
      if MY_HAND[battle_time-k] == "p": # [p] を前に使ってる -> [r, s, -]
        try:
          if can_not_use_hand(t[battle_time+k]) == 'r':
            MY_HAND.append("s")
            ANS += 0
          else:
            MY_HAND.append("r")
            ANS += 0
        except IndexError:
          MY_HAND.append("r")
          ANS += 0
      else: # 基本通り
        MY_HAND.append("p")
        ANS += p

    if t[battle_time] == "s": # 基本 -> [r]
      if MY_HAND[battle_time-k] == "r": # [r] を前に使ってる -> [-, s, p]
        try:
          if can_not_use_hand(t[battle_time+k]) == 's':
            MY_HAND.append("p")
            ANS += 0
          else:
            MY_HAND.append("s")
            ANS += 0
        except IndexError:
          MY_HAND.append("s")
          ANS += 0
      else: # 基本通り
        MY_HAND.append("r")
        ANS += r
    
    if t[battle_time] == "p": # 基本 -> [s]
      if MY_HAND[battle_time-k] == "s": # [s] を前に使ってる -> [r, -, p]
        try:
          if can_not_use_hand(t[battle_time+k]) == 'p':
            MY_HAND.append("r")
            ANS += 0
          else:
            MY_HAND.append("p")
            ANS += 0
        except IndexError:
          MY_HAND.append("p")
          ANS += 0
      else: # 基本通り
        MY_HAND.append("s")
        ANS += s

print(ANS)