#include <bits/stdc++.h>
#define LOCAL
using namespace std;
template <typename A, typename B>
ostream& operator <<(ostream& out, const pair<A, B>& a) {
out << "(" << a.first << "," << a.second << ")";
return out;
}
template <typename T, size_t N>
ostream& operator <<(ostream& out, const array<T, N>& a) {
out << "["; bool first = true;
for (auto& v : a) { out << (first ? "" : ", "); out << v; first = 0;} out << "]";
return out;
}
template <typename T>
ostream& operator <<(ostream& out, const vector<T>& a) {
out << "["; bool first = true;
for (auto& v : a) { out << (first ? "" : ", "); out << v; first = 0;} out << "]";
return out;
}
template <typename T, class Cmp>
ostream& operator <<(ostream& out, const set<T, Cmp>& a) {
out << "{"; bool first = true;
for (auto& v : a) { out << (first ? "" : ", "); out << v; first = 0;} out << "}";
return out;
}
template <typename U, typename T, class Cmp>
ostream& operator <<(ostream& out, const map<U, T, Cmp>& a) {
out << "{"; bool first = true;
for (auto& p : a) { out << (first ? "" : ", "); out << p.first << ":" << p.second; first = 0;} out << "}";
return out;
}
#ifdef LOCAL
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
#else
#define trace(...) 42
#endif
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
cerr << name << ": " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
const char* comma = strchr(names + 1, ',');
cerr.write(names, comma - names) << ": " << arg1 << " |";
__f(comma + 1, args...);
}
#define rep(i,n) for(int i=0; i<(n); i++)
using ll = long long;
#define int long long
using P = pair<int,int>;
//#########################################
string a[4] = {"maerd", "remaerd" ,"esare" ,"resare"};
signed main(){
    string s;cin >> s;
    int n = s.size();
    
    reverse(s.begin(),s.end());
    //rep(i,10)s += 'a';
    bool ok = true;
    for(int i = 0;i < n;){
        if(s[i] == 'm'){
            if(i+5 > n){
                ok = false;
                break;
            }
            if(s.substr(i,5) == a[0]){
                i+= 5;
                continue;
            }
            else{
                ok = false;
                break;
            }


        }
        else if(s[i] == 'e'){
            //trace(s.substr(i,i+5));
            if(i+5 > n){
                ok = false;
                break;
            }
            if(s.substr(i,5) == a[2]){
                i += 5;
                continue;
            }
            else {
                ok = false;
                break;
            }

        }
        else if(s[i] == 'r'){
            if(i+6 > n){
                ok = false;
                break;
            }
            
            if(s.substr(i,6) == a[3]){
                i += 6;
                continue;
            }
            if(i+7 > n){
                ok = false;
                break;
            }

            if(s.substr(i,7) == a[1]){
                i += 7;
                continue;
                
            }
           
            else {
                ok = false;
                break;
            }
            

        }
        else {
            ok = false;
            break;
        }
    }
    if(ok)cout << "YES" << endl;
    else cout << "NO" << endl;


    return 0;
}

Measured memory_bytes: 3760