#include <bits/stdc++.h>
using namespace std;
void Fast( ) ;
void solve( ) ;
int main( )
{
Fast( ) ;
solve( ) ;
return 0 ;
}
void Fast( )
{
ios_base:: sync_with_stdio ( 0 ) ;
cin .tie ( 0 ) ;
cout .tie ( 0 ) ;
}
void solve( )
{
string s;
cin >> s;
int h = s.find ( 'h' ) ;
s[ h] = '1' ;
int e = s.find ( 'e' ) ;
s[ e] = '1' ;
int l1 = s.find ( 'l' ) ;
s[ l1] = '2' ;
int l2 = s.find ( 'l' ) ;
s[ l2] = '1' ;
int o = s.find ( 'o' ) ;
s[ o] = '1' ;
// cout << h << "\n";
// cout << e << "\n";
// cout << l1 << "\n";
// cout << l2 << "\n";
// cout << o << "\n";
if ( ( o > l2 && o > l1 && o > e && o > h) && ( l2 == l1 + 1 ) && ( l2 > l1 && l2 > h && l2 > e && o > l2) && ( o > l1 && l1 < l2 && l1 > e && l1 > h) && ( e < l2 && e < l1 && e < o && e > h) && ( l2 > h && l1 > h && e > h && o > h) )
cout << "YES\n " ;
else
cout << "NO\n " ;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQgRmFzdCgpOwp2b2lkIHNvbHZlKCk7CmludCBtYWluKCkKewogIEZhc3QoKTsKICBzb2x2ZSgpOwogIHJldHVybiAwOwp9CnZvaWQgRmFzdCgpCnsKICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogIGNpbi50aWUoMCk7CiAgY291dC50aWUoMCk7Cn0Kdm9pZCBzb2x2ZSgpCnsKICBzdHJpbmcgczsKICBjaW4gPj4gczsKICBpbnQgaCA9IHMuZmluZCgnaCcpOwogIHNbaF0gPSAnMSc7CiAgaW50IGUgPSBzLmZpbmQoJ2UnKTsKICBzW2VdID0gJzEnOwogIGludCBsMSA9IHMuZmluZCgnbCcpOwogIHNbbDFdID0gJzInOwogIGludCBsMiA9IHMuZmluZCgnbCcpOwogIHNbbDJdID0gJzEnOwogIGludCBvID0gcy5maW5kKCdvJyk7CiAgc1tvXSA9ICcxJzsKICAvLyBjb3V0IDw8IGggPDwgIlxuIjsKICAvLyBjb3V0IDw8IGUgPDwgIlxuIjsKICAvLyBjb3V0IDw8IGwxIDw8ICJcbiI7CiAgLy8gY291dCA8PCBsMiA8PCAiXG4iOwogIC8vIGNvdXQgPDwgbyA8PCAiXG4iOwogIGlmICgobyA+IGwyICYmIG8gPiBsMSAmJiBvID4gZSAmJiBvID4gaCkgJiYgKGwyID09IGwxICsgMSkgJiYgKGwyID4gbDEgJiYgbDIgPiBoICYmIGwyID4gZSAmJiBvID4gbDIpICYmIChvID4gbDEgJiYgbDEgPCBsMiAmJiBsMSA+IGUgJiYgbDEgPiBoKSAmJiAoZSA8IGwyICYmIGUgPCBsMSAmJiBlIDwgbyAmJiBlID4gaCkgJiYgKGwyID4gaCAmJiBsMSA+IGggJiYgZSA+IGggJiYgbyA+IGgpKQogICAgY291dCA8PCAiWUVTXG4iOwogIGVsc2UKICAgIGNvdXQgPDwgIk5PXG4iOwp9