空文字列である T の末尾に「dream, dreamer, erase, eraser」のいずれかを追加することで、与えられた文字列 S と同じものができるかどうかを判定する問題です。
提出
s = input().replace("eraser","").replace("erase","").replace("dreamer","").replace("dream","")
if s:
print("NO")
else:
print("YES")
文字列 S が、4つの文字列の組み合わせで出来ているかどうかを判定することで、導き出せます。
replace()メソッドを使用して、S の中にある4つの文字列を、空文字列に置換します。
4つの文字列を置換し終えた S の中に文字が残っていたら「NO」を返し、そうでない場合には「YES」を返します。
置換する順番ですが、上記の順番でないと上手くいかないことがあります。
「dreamer」という文字列が、その後の続きによっては、「dream」と「erase(またはeraser)」で考えなくてはいけない場合があるからです。
「eraser」はそれ以外のパターンがないので、最初に置換します。
すると、次の「erase」もそれ以外のパターンはなくなります。
これによって「er~~」のパターンがなくなったので、順に「dreamer」「dream」と置換します。