그리디 유형이니 그리디하게 풀어주심 됩니다~
# PROBLEM - MVP 다이아몬드 (Easy)
# TIER - S2
# NUMBER - 20431
# DATE - 2023-01-26 16:21
# IDEA - 그리디
# money = 과금액 누적 배열이다.
# 등급이 주어질 때,
# 저번달 과금액 + 이번달 더 과금할 금액 = 다음등급 - 1
# 이여야 하므로 money에 (다음등급 과금액 - 1 - 저번달 이미 한 금액) 해주면
# 이번달 해당 등급을 찍기 위해 과금 해야할 최대 금액이 나온다.
n = int(input())
silver, gold, platinum, diamond = map(int, input().split())
grades = input()
money = [0, 0]
for grade in grades:
if grade == 'B':
money.append(silver-1-money[-1])
if grade == 'S':
money.append(gold-1-money[-1])
if grade == 'G':
money.append(platinum-1-money[-1])
if grade == 'P':
money.append(diamond-1-money[-1])
if grade == 'D':
money.append(diamond)
print(sum(money))
# 풀이과정
# 0 30 60 90 150
# BSG
# 29(29) + 59(30+29) + 89(30+59)
# 브 + 실 + 골
# answer = 29 + 30 + 59 => 118
# money = [0, 29, 30, 59]