import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.io.IOException;
import java.io.InputStream;

/**
 * Built using CHelper plug-in Actual solution is at the top
 *
 * @author dauom
 */
public class Main {
  public static void main(String[] args) {
    InputStream inputStream = System.in;
    OutputStream outputStream = System.out;
    InputReader in = new InputReader(inputStream);
    PrintWriter out = new PrintWriter(outputStream);
    DImagePreview solver = new DImagePreview();
    solver.solve(1, in, out);
    out.close();
  }

  static class DImagePreview {
    public final void solve(int testNumber, InputReader in, PrintWriter out) {
      final int n = in.nextInt();
      final long swipeCost = in.nextInt();
      final long rotateCost = in.nextInt();
      final long T = in.nextInt();
      final String os = in.next();
      final char[] s = (os + os).toCharArray();

      int spentOnFirst = 0;
      if (s[0] == 'w') {
        spentOnFirst += rotateCost;
      }
      if (++spentOnFirst > T) {
        out.println(0);
        return;
      }

      int ans = 1;
      long[] timeSpent = new long[n * 2];
      timeSpent[n] = spentOnFirst;
      for (int i = n + 1; i < s.length; i++) {
        timeSpent[i] = timeSpent[i - 1] + swipeCost + 1;
        if (s[i] == 'w') {
          timeSpent[i] += rotateCost;
        }
        if (timeSpent[i] <= T) {
          ans = Math.max(ans, i - n + 1);
        }
      }
      for (int i = n - 1; i > 0; i--) {
        timeSpent[i] = timeSpent[i + 1] + swipeCost + 1;
        if (s[i] == 'w') {
          timeSpent[i] += rotateCost;
        }
        if (timeSpent[i] <= T) {
          ans = Math.max(ans, n - i + 1);
        }
      }

      for (int i = n + 1, last = 1; i < s.length; i++) {
        long left = T - timeSpent[i] - (i - n) * swipeCost;
        if (left <= 0) break;
        while (last < n && timeSpent[last] - spentOnFirst > left) {
          ++last;
        }
        if (last == n) break;
        ans = Math.max(ans, i - last + 1);
      }
      for (int i = n - 1, last = s.length - 1; i > 0; i--) {
        long left = T - timeSpent[i] - (n - i) * swipeCost;
        if (left <= 0) break;
        while (last > n && timeSpent[last] - spentOnFirst > left) {
          --last;
        }
        if (last == n) break;
        ans = Math.max(ans, last - i + 1);
      }

      out.println(Math.min(ans, n));
    }
  }

  static final class InputReader {
    private final InputStream stream;
    private final byte[] buf = new byte[1 << 18];
    private int curChar;
    private int numChars;

    public InputReader() {
      this.stream = System.in;
    }

    public InputReader(final InputStream stream) {
      this.stream = stream;
    }

    private int read() {
      if (this.numChars == -1) {
        throw new UnknownError();
      } else {
        if (this.curChar >= this.numChars) {
          this.curChar = 0;

          try {
            this.numChars = this.stream.read(this.buf);
          } catch (IOException ex) {
            throw new InputMismatchException();
          }

          if (this.numChars <= 0) {
            return -1;
          }
        }

        return this.buf[this.curChar++];
      }
    }

    public final int nextInt() {
      int c;
      for (c = this.read(); isSpaceChar(c); c = this.read()) {}

      byte sgn = 1;
      if (c == 45) { // 45 == '-'
        sgn = -1;
        c = this.read();
      }

      int res = 0;

      while (c >= 48 && c <= 57) { // 48 == '0', 57 == '9'
        res *= 10;
        res += c - 48; // 48 == '0'
        c = this.read();
        if (isSpaceChar(c)) {
          return res * sgn;
        }
      }

      throw new InputMismatchException();
    }

    public final String next() {
      int c;
      while (isSpaceChar(c = this.read())) {}

      StringBuilder result = new StringBuilder();
      result.appendCodePoint(c);

      while (!isSpaceChar(c = this.read())) {
        result.appendCodePoint(c);
      }

      return result.toString();
    }

    private static boolean isSpaceChar(final int c) {
      return c == 32 || c == 10 || c == 13 || c == 9
          || c == -1; // 32 == ' ', 10 == '\n', 13 == '\r', 9 == '\t'
    }
  }
}
