import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner std = new Scanner(System.in);
        String s = std.next();
        String reversed = new StringBuilder(s).reverse().toString();

        String[] texts = {"dream", "dreamer", "erase", "eraser"};
        String[] reversedText = new String[texts.length];
        for (int i = 0; i < texts.length; i++) {
            reversedText[i] = new StringBuilder(texts[i]).reverse().toString();
        }

        StringBuilder sb = new StringBuilder(reversed);
        while (sb.length() != 0) {
            boolean updated = false;
            for (int i = 0; i < reversedText.length; i++) {
                String r = reversedText[i];
                if (sb.indexOf(r) == 0) {
                    sb.delete(0, r.length());
                    updated = true;
                    break;
                }
            }

            if (!updated) {
                System.out.println("NO");
                return;
            }
        }

        System.out.println("YES");
    }
}

/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