#include <bits/stdc++.h>
using namespace std;
const double EPS = -1e8;
const double Pi = acos(-1);
bool inline equ(double a, double b) { return fabs(a - b) < EPS; }
int _R(int& x) { return scanf("%d", &x); }
int _R(long long& x) { return scanf("%" PRId64, &x); }
int _R(double& x) { return scanf("%lf", &x); }
int _R(char* s) { return scanf("%s", s); }
int R() { return 0; }
template <typename T1, typename... T2>
int R(T1& x, T2&... tail) {
  int tmp = _R(x);
  return tmp + R(tail...);
}
template <typename Iter, typename F>
inline void out(Iter s, Iter e, F of) {
  bool flag = 0;
  for (Iter it = s; it != e; it++) {
    if (flag)
      printf(" ");
    else
      flag = 1;
    of(*it);
  }
  puts("");
}
const int MAXN = 1e5 + 10;
const int MAXK = 510;
int n, k, qL, qR;
char in[MAXN];
struct Cons {
  int c, l, r;
  int i, j;
  void read() {
    char tc[2];
    R(tc, l, r);
    c = tc[0] - 'a';
    i = 1, j = 0;
  }
} cons[MAXK];
vector<int> pos[26];
int cnt, sat[MAXN], st[26];
int main() {
  scanf("%s", in + 1);
  R(k, qL, qR);
  n = strlen(in + 1);
  for (int i = (1); i <= (k); i++) cons[i].read();
  for (int i = 0; i < (26); i++) pos[i].push_back(0);
  for (int i = (1); i <= (n); i++) pos[in[i] - 'a'].push_back(i);
  for (int i = 0; i < (26); i++) pos[i].push_back(n + 1);
  long long ans = 0;
  if (qL == 0) cnt = n;
  auto upd = [&](int i, int x) {
    if (qL <= sat[i] && sat[i] <= qR) cnt--;
    sat[i] += x;
    if (qL <= sat[i] && sat[i] <= qR) cnt++;
  };
  for (int i = (1); i <= (n); i++) {
    for (int c = 0; c < (26); c++)
      st[c] = lower_bound((pos[c]).begin(), (pos[c]).end(), i) - pos[c].begin();
    for (int j = (1); j <= (k); j++) {
      int& pj = cons[j].j;
      int& pi = cons[j].i;
      int nc = cons[j].c;
      int nj = pos[nc][min((int)(pos[nc]).size() - 1, st[nc] + cons[j].r)] - 1;
      int ni = pos[nc][min((int)(pos[nc]).size() - 1, st[nc] + cons[j].l - 1)];
      while (pj + 1 <= nj && pj + 1 <= n) {
        pj++;
        upd(pj, 1);
      }
      while (pi < ni && pi <= n) {
        upd(pi, -1);
        pi++;
      }
    }
    ans += cnt;
    upd(i, -sat[i] - 1);
  }
  cout << ans << endl;
}
