#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<stdlib.h>
#include<vector>
#include<queue>
#include <iomanip>
using namespace std;
typedef __int64 LL;
const LL MAX = (LL)1e5;
const LL eps=1e9+7;

LL n,a,b,T;
char h[MAX*5+10];
void init()
{
    cin>>n>>a>>b>>T;
    cin>>h+1;
}
LL MIN(LL x,LL y)
{
    return (x>y)?y:x;
}
LL one[MAX*5+10];
LL two[MAX*5+10];
int main()
{
    ios_base::sync_with_stdio(0);
    init();
    one[1]=((h[1]=='w')?b:0)+1;
    for(int i=2; i<=n; i++)
    {
        one[i]=one[i-1]+a+((h[i]=='w')?b:0)+1;
    }
    for(int i=2; i<=n; i++)
    {
        two[i]=two[i-1]+a+((h[n-i+2]=='w')?b:0)+1;
    }
//    for(int i=1;i<=n;i++)
//    {
//        cout<<one[i]<<" ";
//    }
//    cout<<endl;
//    for(int i=1;i<=n;i++)
//    {
//        cout<<two[i]<<" ";
//    }
//    cout<<endl;
    LL ans=0;
    for(int i=1; i<=n; i++)
    {
        if(i!=3) continue;
        if(one[i]>T) break;
        int l,r,mid;
        l=2;
        r=n;
        while(l<=r)
        {
            mid=(l+r)/2;
          //  cout<<l<<" "<<mid<<" "<<r<<'*'<<endl;
            if(two[mid]+one[i]+(mid-1)*a>T) r=mid-1;
            else l=mid+1;
        }
        l-=1;
        ans=(l-1+i>ans)?l-1+i:ans;
      //  cout<<l<<" "<<i<<" "<<ans<<endl;
    }
    for(int i=1; i<=n; i++)
    {
        if(one[i]>T) break;
        int l,r,mid;
        l=2;
        r=n;
        while(l<=r)
        {
            mid=(l+r)/2;
            if(two[mid]+one[i]+(i-1)*a>T) r=mid-1;
            else l=mid+1;
        }
        l-=1;
        ans=(l-1+i>ans)?l-1+i:ans;
    }
    if(ans>n) ans=n;
    cout<<ans<<endl;
    return 0;
}
/*
7 1 100 8
hhhwwwh

*/
