Problem:
Score : 300 points

Problem Statement

You are given a string S consisting of lowercase English letters.
Another string T is initially empty.
Determine whether it is possible to obtain S = T by performing the following operation an arbitrary number of times:

Append one of the following at the end of T: dream, dreamer, erase and eraser.

Constraints

1≦|S|≦10^5

S consists of lowercase English letters.

Input

The input is given from Standard Input in the following format:

S

Output

If it is possible to obtain S = T, print YES. Otherwise, print NO.

Sample Input 1

erasedream

Sample Output 1

YES

Append erase and dream at the end of T in this order, to obtain S = T.

Sample Input 2

dreameraser

Sample Output 2

YES

Append dream and eraser at the end of T in this order, to obtain S = T.

Sample Input 3

dreamerer

Sample Output 3

NO

Solution in Fortran (GNU Fortran 9.2.1) (judge verdict: Accepted)

program C049
    implicit none
    character(100000) :: S
    integer(8) :: i, j, N


    read(5,*) S
    N = len_trim(S)

    i = 0
    j = 0

    do while(i < N)
        if (S(i+1:i+7) == "dreamer") then
            if (S(i+8:i+8) /= "a")then
                i = i + 7
            else
                i = i + 5
            end if
        else if (S(i+1:i+5) == "dream") then
            i = i + 5
        else if (S(i+1:i+6) == "eraser") then
            i = i + 6
        else if (S(i+1:i+5) == "erase") then
            i = i + 5
        else 
            i = N
            j = 1
        end if
    end do

    if (j == 0) then
        write(6,*) "YES"
    else
        write(6,*) "NO"
    end if




    
end program C049