// inputに入力データ全体が入る
function Main(input) {
  	
  	const reverse = (s) => {
      return s.split("").reverse().join("");
    };
  	
  	var WORDS = ["dream", "dreamer", "erase", "eraser"].map(reverse);
  	var S = reverse(input.split("\n")[0]);
  	var S_org = reverse(input.split("\n")[0]);
  	var word = "";
  	var T = ""; // 結果
  	var length = 0;
  	
  	// 一文字ずつ追加していきWORDSに一致するものがあるかどうか判定する
    // 見つかったらカウンタをリセットする、文字列も削る
  while(S.length>5){
      	word += S[length];
    
    	var result = -1;
    	var idx = 0;
    	// 文字が含まれるか検索
    	for(var i=0; i<WORDS.length; i++){
          // 一致する文字があるかどうか確かめる
          idx = word.indexOf(WORDS[i]);
          // 無かったら次へ
          if(idx == -1){
          	continue; 
          }
          // 余分な文字を削除し完全一致するか判定
          if(word.slice(idx) === WORDS[i]){
		  	result = i;
          }
        }
      	// 一致したものがあるとき
      	if(result != -1){
        	T += WORDS[result];  // 前に文字列を追加
          	S = S.slice(length);// 追加した文字までを削除する
          	word = ""   // 文字のリセット
          	length = 0; // カウントのリセット
        }
      	length += 1;
	}
  
  	// SとTが一致するとき
  	if(S_org == T){
      console.log("YES");
    // しないとき
    }else{
      console.log("NO");
    }
}

Main(require("fs").readFileSync("/dev/stdin", "utf8"));