import java.util.*;
public class Main {

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		String S = stdIn.next();
		StringBuffer str = new StringBuffer(S);
        S = str.reverse().toString();
        
        String[] divide = {"dream", "dreamer", "erase", "eraser"};
        for(int i = 0; i < 4; i++) {
        	StringBuffer d = new StringBuffer(divide[i]);
        	divide[i] = d.reverse().toString();
        }
        
        boolean can = true;
        for(int i = 0; i < S.length();) {
        	boolean flag = false;
        	for(int j = 0; j < 4; j++) {
        		String d = divide[j];
        		if(i+d.length() <= S.length() && S.substring(i, i+d.length()).equals(d)) {
        			flag = true;
        			i += d.length();
        		}
        	}
        	if(!flag) {
        		can = false;
        		break;
        	}
        }
        if(can) System.out.println("YES");
        else System.out.println("NO");

	}

}
/tmp/hf-datasets-cache/medium/datasets/42704881117311-config-parquet-and-info-qiankunmu-Project_CodeNet-896c9d36/hub/datasets--qiankunmu--Project_CodeNet_Python800_and_Java250/snapshots/c899fde44a77ba1cc14973ed3de064e4ff3aadc7/Project_CodeNet_Java250.tar.gz