![]()
![]()
#include <iostream>
#include <algorithm>
#include <cmath>
#include <stdio.h>
#include <cstring>
#include <string>
#include <cstdlib>
#include <queue>
#include <stack>
#include <set>
#include <vector>
#include <map>
#include <list>
//#include <>
using namespace std;
string s;
char ss[103];
int slen;
int nb,ns,nc;
int pb,ps,pc,pnum;
long long mon;
struct hum{
int bre;
int sau;
int che;
long long price;
}h[1];
long long money(long long mid)
{
long long a,b,c;
a=mid*h[0].bre-nb;
b=mid*h[0].sau-ns;
c=mid*h[0].che-nc;
if(a<0) a=0;
if(b<0) b=0;
if(c<0) c=0;
return a*pb+b*ps+c*pc;
}
int main()
{
//汉堡的组成
cin>>s;
slen=s.length();
strcpy(ss,s.c_str());
//结构体汉堡的初始化
h[0].bre=0;
h[0].che=0;
h[0].sau=0;
h[0].price=0;
for(int i=0;i<=slen;++i)
{
if(s[i]=='B')
h[0].bre++;
if(s[i]=='C')
h[0].che++;
if(s[i]=='S')
h[0].sau++;
}
//cout<<h[0].bre<<" "<<h[0].che<<" "<<h[0].sau<<" "<<endl;检测初始化好了没QAQ
//材料的输入
scanf("%d%d%d%d%d%d",&nb,&ns,&nc,&pb,&ps,&pc);
h[0].price=pb*h[0].bre+ps*h[0].sau+pc*h[0].che;
cin>>mon;
//------------材料的处理
long long l=0,r=1e15,mid=(l+r)/2;
while(l<r)
{
if(money(mid)<=mon)
l=mid+1;
else
r=mid;
mid=(l+r)/2;
}
if(money(mid)>mon)
cout<<mid-1<<endl;
else
cout<<mid<<endl;
return 0;
}