import java.util.*;

class Main {
    static String divide[] = {
        "dream",
        "dreamer",
        "erase",
        "eraser"
    };

    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        String S = sc.next();

        int index = S.length();
        boolean canDiv;
        while (true) {
            boolean isFit = false;
            for (String d: divide) {
                if (d.length() > index) continue;
                String substr = S.substring(index - d.length(), index);
                if (d.equals(substr)) {
                    index -= d.length();
                    isFit = true;
                    break;
                }
            }
            if (!isFit) {
                canDiv = false;
                break;
            }
            if (index == 0) {
                canDiv = true;
                break;
            }
        }

        if (canDiv)
            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