import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		sc.close();
		int n = s.length();
		String ans[] = { "YES", "NO" };
		int a = 0;
		String tmp = "";
		String t[] = { "dream", "dreamer", "erase", "eraser" };
		for (int i = n - 1; i >= 0; --i) {
			if (s.charAt(i) == 'r') {
				if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				}
			}
			if (s.charAt(i) == 'e') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
			if (s.charAt(i) == 'm') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
		}
		System.out.println(ans[a]);

	}

} import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		sc.close();
		int n = s.length();
		String ans[] = { "YES", "NO" };
		int a = 0;
		String tmp = "";
		String t[] = { "dream", "dreamer", "erase", "eraser" };
		for (int i = n - 1; i >= 0; --i) {
			if (s.charAt(i) == 'r') {
				if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				}
			}
			if (s.charAt(i) == 'e') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
			if (s.charAt(i) == 'm') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
		}
		System.out.println(ans[a]);

	}

} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		sc.close();
		int n = s.length();
		String ans[] = { "YES", "NO" };
		int a = 0;
		String tmp = "";
		String t[] = { "dream", "dreamer", "erase", "eraser" };
		for (int i = n - 1; i >= 0; --i) {
			if (s.charAt(i) == 'r') {
				if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				}
			}
			if (s.charAt(i) == 'e') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
			if (s.charAt(i) == 'm') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
		}
		System.out.println(ans[a]);

	} main {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		sc.close();
		int n = s.length();
		String ans[] = { "YES", "NO" };
		int a = 0;
		String tmp = "";
		String t[] = { "dream", "dreamer", "erase", "eraser" };
		for (int i = n - 1; i >= 0; --i) {
			if (s.charAt(i) == 'r') {
				if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				}
			}
			if (s.charAt(i) == 'e') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
			if (s.charAt(i) == 'm') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
		}
		System.out.println(ans[a]);

	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String s = sc.next(); s sc.next() sc.next sc sc.close() sc.close sc int n = s.length(); n s.length() s.length s String ans[] = { "YES", "NO" }; ans { "YES", "NO" } "YES" "NO" int a = 0; a 0 String tmp = ""; tmp "" String t[] = { "dream", "dreamer", "erase", "eraser" }; t { "dream", "dreamer", "erase", "eraser" } "dream" "dreamer" "erase" "eraser" for (int i = n - 1; i >= 0; --i) {
			if (s.charAt(i) == 'r') {
				if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				}
			}
			if (s.charAt(i) == 'e') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
			if (s.charAt(i) == 'm') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
		} int i = n - 1; int i = n - 1; i n - 1 n 1 i >= 0 i 0 --i --i i {
			if (s.charAt(i) == 'r') {
				if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				}
			}
			if (s.charAt(i) == 'e') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
			if (s.charAt(i) == 'm') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
		} {
			if (s.charAt(i) == 'r') {
				if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				}
			}
			if (s.charAt(i) == 'e') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
			if (s.charAt(i) == 'm') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
		} if (s.charAt(i) == 'r') {
				if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				}
			} s.charAt(i) == 'r' s.charAt(i) s.charAt s i 'r' {
				if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				}
			} if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				} i < 5 i 5 {
					a = 1;
					break;
				} a = 1 a 1 break; {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				} tmp = s.substring(i - 5, i + 1) tmp s.substring(i - 5, i + 1) s.substring s i - 5 i 5 i + 1 i 1 if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					} !tmp.equals(t[3]) tmp.equals(t[3]) tmp.equals tmp t[3] t 3 {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						} i >= 6 i 6 {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						} tmp = s.substring(i - 6, i + 1) tmp s.substring(i - 6, i + 1) s.substring s i - 6 i 6 i + 1 i 1 if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							} !tmp.equals(t[1]) tmp.equals(t[1]) tmp.equals tmp t[1] t 1 {
								a = 1;
								break;
							} a = 1 a 1 break; {
								i = i - 6;
								continue;
							} i = i - 6 i i - 6 i 6 continue; a = 1 a 1 break; {
						i = i - 5;
						continue;
					} i = i - 5 i i - 5 i 5 continue; if (s.charAt(i) == 'e') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			} s.charAt(i) == 'e' s.charAt(i) s.charAt s i 'e' {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			} if (i < 4) {
					a = 1;
					break;
				} i < 4 i 4 {
					a = 1;
					break;
				} a = 1 a 1 break; tmp = s.substring(i - 4, i + 1) tmp s.substring(i - 4, i + 1) s.substring s i - 4 i 4 i + 1 i 1 if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				} tmp.equals(t[2]) tmp.equals tmp t[2] t 2 {
					i = i - 4;
					continue;
				} i = i - 4 i i - 4 i 4 continue; {
					a = 1;
					break;
				} a = 1 a 1 break; if (s.charAt(i) == 'm') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			} s.charAt(i) == 'm' s.charAt(i) s.charAt s i 'm' {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			} if (i < 4) {
					a = 1;
					break;
				} i < 4 i 4 {
					a = 1;
					break;
				} a = 1 a 1 break; tmp = s.substring(i - 4, i + 1) tmp s.substring(i - 4, i + 1) s.substring s i - 4 i 4 i + 1 i 1 if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				} tmp.equals(t[0]) tmp.equals tmp t[0] t 0 {
					i = i - 4;
					continue;
				} i = i - 4 i i - 4 i 4 continue; {
					a = 1;
					break;
				} a = 1 a 1 break; System.out.println(ans[a]) System.out.println System.out System System.out ans[a] ans a String[] args args public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		sc.close();
		int n = s.length();
		String ans[] = { "YES", "NO" };
		int a = 0;
		String tmp = "";
		String t[] = { "dream", "dreamer", "erase", "eraser" };
		for (int i = n - 1; i >= 0; --i) {
			if (s.charAt(i) == 'r') {
				if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				}
			}
			if (s.charAt(i) == 'e') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
			if (s.charAt(i) == 'm') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
		}
		System.out.println(ans[a]);

	}

} public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		sc.close();
		int n = s.length();
		String ans[] = { "YES", "NO" };
		int a = 0;
		String tmp = "";
		String t[] = { "dream", "dreamer", "erase", "eraser" };
		for (int i = n - 1; i >= 0; --i) {
			if (s.charAt(i) == 'r') {
				if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				}
			}
			if (s.charAt(i) == 'e') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
			if (s.charAt(i) == 'm') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
		}
		System.out.println(ans[a]);

	}

} Main
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		sc.close();
		int n = s.length();
		String ans[] = { "YES", "NO" };
		int a = 0;
		String tmp = "";
		String t[] = { "dream", "dreamer", "erase", "eraser" };
		for (int i = n - 1; i >= 0; --i) {
			if (s.charAt(i) == 'r') {
				if (i < 5) {
					a = 1;
					break;
				} else {
					tmp = s.substring(i - 5, i + 1);
					if (!tmp.equals(t[3])) {
						if (i >= 6) {
							tmp = s.substring(i - 6, i + 1);
							if (!tmp.equals(t[1])) {
								a = 1;
								break;
							} else {
								i = i - 6;
								continue;
							}
						}
						a = 1;
						break;
					} else {
						i = i - 5;
						continue;
					}
				}
			}
			if (s.charAt(i) == 'e') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[2])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
			if (s.charAt(i) == 'm') {
				if (i < 4) {
					a = 1;
					break;
				}
				tmp = s.substring(i - 4, i + 1);
				if (tmp.equals(t[0])) {
					i = i - 4;
					continue;
				}
				else {
					a = 1;
					break;
				}
			}
		}
		System.out.println(ans[a]);

	}

}
