enum class Mode {
    NONE,
    D,
    E
}

fun main(args: Array<String>) {
    val s = readLine() ?: return
    var mode = Mode.NONE
    val b = StringBuilder()
    s.forEachIndexed { i, c ->
        when (mode) {
            Mode.NONE -> {
                when (c) {
                    'd' -> {
                        mode = Mode.D
                        b.append(c)
                    }
                    'e' -> {
                        mode = Mode.E
                        b.append(c)
                    }
                    else -> {
                        println("NO")
                        return
                    }
                }
            }
            Mode.D -> {
                when (b.length) {
                    1 -> {
                        if (c == 'r') {
                            b.append(c)
                        } else {
                            println("NO")
                            return
                        }
                    }
                    2 -> {
                        if (c == 'e') {
                            b.append(c)
                        } else {
                            println("NO")
                            return
                        }
                    }
                    3 -> {
                        if (c == 'a') {
                            b.append(c)
                        } else {
                            println("NO")
                            return
                        }
                    }
                    4 -> {
                        if (c == 'm') {
                            b.append(c)
                        } else {
                            println("NO")
                            return
                        }
                    }
                    5 -> {
                        if (c == 'e') {
                            b.append(c)
                        } else if (c == 'd') {
                            mode = Mode.D
                            b.clear()
                            b.append(c)
                        } else {
                            println("NO")
                            return
                        }
                    }
                    6 -> {
                        if (c == 'r') {
                            b.append(c)
                        } else {
                            println("NO")
                            return
                        }
                    }
                    7 -> {
                        if (c == 'd') {
                            mode = Mode.D
                            b.clear()
                            b.append(c)
                        } else if (c == 'e') {
                            mode = Mode.E
                            b.clear()
                            b.append(c)
                        } else if (c == 'a') {
                            mode = Mode.E
                            b.clear()
                            b.append("era")
                        } else {
                            println("NO")
                            return
                        }

                    }
                }
            }
            Mode.E -> {
                when (b.length) {
                    1 -> {
                        if (c == 'r') {
                            b.append(c)
                        } else {
                            println("NO")
                            return
                        }
                    }
                    2 -> {
                        if (c == 'a') {
                            b.append(c)
                        } else {
                            println("NO")
                            return
                        }
                    }
                    3 -> {
                        if (c == 's') {
                            b.append(c)
                        } else {
                            println("NO")
                            return
                        }
                    }
                    4 -> {
                        if (c == 'e') {
                            b.append(c)
                        } else {
                            println("NO")
                            return
                        }
                    }
                    5 -> {
                        if (c == 'r') {
                            b.clear()
                            mode = Mode.NONE
                        } else if (c == 'e') {
                            mode = Mode.E
                            b.clear()
                            b.append(c)
                        } else if (c == 'd') {
                            mode = Mode.D
                            b.clear()
                            b.append(c)
                        } else {
                            println("NO")
                            return
                        }
                    }
                }
            }
        }
    }
    when ((b.toString())) {
        "", "dream", "dreamer", "erase", "eraser" -> {
            println("YES")
        }
        else -> {
            println("NO")
        }
    }
}



Measured memory_bytes: 38144