const
maxn=2000000;
var
a,s:array[0..maxn] of longint;
c,p,q:ansistring;
n,m,b,k:longint;
ans:int64;
procedureqsort(l,r:longint);var
i,j,mid:longint;
begin
i:=l;
j:=r;
mid:=a[(l+r) div2];
repeatwhile (a[i]>mid) and (i<r) do inc(i);
while (a[j]<mid) and (j>l) do dec(j);
if (i<=j) thenbegin
a[0]:=a[i];
a[i]:=a[j];
a[j]:=a[0];
inc(i); dec(j);
end;
until i>j;
if (i<r) then qsort(i,r);
if (l<j) then qsorT(l,j);
end;
functionmax(x,y:longint):longint;
beginif (x>y) thenexit(x)
elseexit(y);
end;
procedureinit;var
i,j:longint;
begin
readln(c);
m:=length(c);
for i:=1to m doif (c[i]='X') then inc(n);
for i:=1to n doread(a[i]);
end;
proceduremain;var
i,j:longint;
begin
j:=0;
for i:=1to m dobegin
inc(j);
case c[i] of'A':s[j]:=0;
'B':s[j]:=-1;
'X':s[j]:=1;
end;
while (s[j]>0) and (s[j-1]>0) dobeginif (s[j-2]=0) then s[j-2]:=s[j]+s[j-1];
if (s[j-2]=-1)then s[j-2]:=max(s[j],s[j-1]);
j:=j-2;
end;
end;
end;
begin
init;
qsort(1,n);
main;
ans:=0;
for k:=1to s[1] do
ans:=ans+a[k];
writeln(ans);
end.