#include <bits/stdc++.h>
using namespace std;
void files() {
  freopen("1.in", "r", stdin);
  freopen("1.out", "w", stdout);
  return;
}
double eps = 1e-6;
double pi = acos(-1);
const int MXN = 1e5 + 5;
const long long MOD = 1e9 + 7;
int dx8[] = {0, 0, 1, 1, 1, -1, -1, -1};
int dy8[] = {1, -1, 1, -1, 0, 0, -1, 1};
int dx4[] = {1, -1, 0, 0};
int dy4[] = {0, 0, 1, -1};
long long bin(long long base, long long pow, long long m) {
  base %= m;
  long long ans = 1;
  while (pow) {
    if (pow & 1) ans = ans * base % m;
    base = base * base % m;
    pow >>= 1;
  }
  return ans;
}
void sol() {
  int n;
  scanf("%d", &n);
  long long a, b, t;
  scanf("%lld %lld %lld", &a, &b, &t);
  long long pre[n], suf[n];
  char s[n + 5];
  scanf("%s", s);
  for (int i = 0; i < n; ++i) {
    pre[i] = (s[i] == 'w') ? b : 0LL;
    pre[i]++;
    if (i != 0) pre[i] += a;
    pre[i] += (i == 0) ? 0LL : pre[i - 1];
  }
  for (int i = 0; i < n; ++i) {
    suf[i] = (s[n - 1 - i] == 'w') ? b : 0LL;
    suf[i]++;
    suf[i] += a;
    suf[i] += (i == 0) ? 0LL : suf[i - 1];
  }
  auto can = [&](int k) {
    for (int i = 1; i <= k; ++i) {
      long long cost = pre[i - 1];
      int other = k - i;
      if (other >= 1) cost += suf[other - 1];
      cost += min(i - 1, k - i) * a;
      if (cost <= t) return true;
    }
    return false;
  };
  int low = 0;
  int high = n + 1;
  int mid;
  while (high - low > 1) {
    int mid = (high + low) / 2;
    if (can(mid))
      low = mid;
    else
      high = mid;
  }
  printf("%d\n", low);
}
int main() {
  int tcase = 1;
  cout << fixed << setprecision(6);
  while (tcase--) {
    sol();
  }
}
