#include <bits/stdc++.h>
using namespace std;
int _I() {
  int x;
  scanf("%d", &x);
  return x;
}
long long _L() {
  long long x;
  scanf("%lld", &x);
  return x;
}
long long gcd(long long x, long long y) {
  if (x % y == 0)
    return y;
  else
    return gcd(y, x % y);
}
long long lcm(long long x, long long y) {
  x /= gcd(x, y);
  return x * y;
}
bool prime[2];
vector<int> v;
map<int, int> mp;
void sieve() {
  int i, j;
  prime[1] = 1;
  v.push_back(2);
  for (i = 4; i <= 200000; i += 2) prime[i] = 1;
  for (i = 3; i <= 200000; i += 2)
    if (!prime[i]) {
      v.push_back(i);
      for (j = i + i + i; j <= 200000; j += i + i) prime[j] = 1;
    }
}
int ar[200000 + 2];
int main() {
  int i, j, l;
  string a;
  cin >> a;
  l = a.size();
  int mx = 96;
  for (i = 0; i < l; i++) {
    if (a[i] > mx) {
      if (a[i] > (mx + 1)) {
        puts("NO");
        return 0;
      } else
        mx = a[i];
    }
  }
  puts("YES");
  return 0;
}
