Vasya has recently learned to type and log on to the Internet. He immediately entered a chat room and decided to say hello to everybody. Vasya typed the word s. It is considered that Vasya managed to say hello if several letters can be deleted from the typed word so that it resulted in the word "hello". For example, if Vasya types the word "ahhellllloou", it will be considered that he said hello, and if he types "hlelo", it will be considered that Vasya got misunderstood and he didn't manage to say hello. Determine whether Vasya managed to say hello by the given word s.

Input

The first and only line contains the word s, which Vasya typed. This word consisits of small Latin letters, its length is no less that 1 and no more than 100 letters.

Output

If Vasya managed to say hello, print "YES", otherwise print "NO".

Examples

Input

ahhellllloou


Output

YES


Input

hlelo


Output

NO
#include <bits/stdc++.h>
using namespace std;
const long long maxs = 1e5 + 3;
const long long maxs1 = 1e3 + 4;
const long long mod = 1e9 + 7;
inline long long add(long long a, long long b) { return (mod + a + b) % mod; }
inline long long sub(long long a, long long b) { return (a - b + mod) % mod; }
inline long long mul(long long a, long long b) { return (1ll * a * b) % mod; }
long long fastpow(long long x, long long y) {
  long long res = 1;
  x = x % mod;
  while (y > 0) {
    if (y & 1) res = (res * x) % mod;
    y = y >> 1;
    x = (x * x) % mod;
  }
  return res;
}
long long inv(long long x) { return pow(x, mod - 2); }
long long fact[maxs];
long long fib[maxs];
long long ncr[maxs1][maxs1];
void FACT() {
  fact[0] = 1;
  for (long long i = 1; i < maxs; i++)
    fact[i] = (i % mod * fact[i - 1] % mod) % mod;
}
void FIB() {
  fib[0] = 0;
  fib[1] = 1;
  for (long long i = 2; i < maxs; i++)
    fib[i] = (fib[i - 1] % mod + fib[i - 2] % mod) % mod;
}
void NCR() {
  long long i, j;
  ncr[1][0] = 1;
  ncr[1][1] = 1;
  for (i = 2; i < maxs1; i++) {
    for (j = 0; j <= i; j++) {
      if (j == 0)
        ncr[i][j] = 1;
      else
        ncr[i][j] = (ncr[i - 1][j] + ncr[i - 1][j - 1]) % mod;
    }
  }
}
bool soe(long long n) {
  bool prime[maxs + 1];
  memset(prime, true, sizeof(prime));
  for (long long p = 2; p * p <= maxs; p++) {
    if (prime[p] == true) {
      for (long long i = p * p; i <= maxs; i += p) prime[i] = false;
    }
  }
  if (prime[n])
    return true;
  else
    return false;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  string s;
  cin >> s;
  string second = "hello";
  int i, j = 0;
  for (i = 0; i < s.size(); i++) {
    if (s[i] == second[j]) j++;
  }
  if (j == 5)
    cout << "YES";
  else
    cout << "NO";
}
