"use strict";
function Main(input) {
  const arr = ["dream", "dreamer", "erase", "eraser"];

  for (let i in arr) {
    arr[i] = reverse(arr[i]);
  }
  input = reverse(input);

  let can = true;

  for (let i = 0; i < input.length; ) {
    let can2 = false;
    for (let j = 0; j < 4; j++) {
      let a = arr[j];
      // console.log(
      //   `input.sl: ${input.slice(i, i + a.length)}, a: ${a}, i: ${i}, a.len: ${
      //     a.length
      //   }, input: ${input}`
      // );
      if (input.slice(i, i + a.length) == a) {
        can2 = true;
        i += a.length;
      }
    }
    if (!can2) {
      can = false;
      break;
    }
  }

  if (can) {
    console.log("YES");
  } else {
    console.log("NO");
  }

  // if (input.length == 0) {
  //   console.log("NO");
  //   return;
  // }
  // // console.log(input);
  // while (input.length > 0) {
  //   let flag = false;
  //   for (let s of arr) {
  //     if (input.slice(0, s.length) == s) {
  //       input = input.substr(s.length);
  //       flag = true;
  //       // console.log(
  //       //   `input: ${input.slice(0, s.length)}, s: ${s}, length: ${s.length}`
  //       // );
  //     }
  //   }
  //   if (flag == false) break;
  // }
  // if (input.length <= 0) {
  //   console.log("YES");
  // } else {
  //   console.log("NO");
  // }
}

function reverse(str) {
  return str.split("").reverse().join("");
}

Main(require("fs").readFileSync("/dev/stdin", "utf-8"));
