#include <bits/stdc++.h>
void sf(int &x) { scanf("%d", &x); }
void sf(char &x) { scanf("%c", &x); }
void sf(double &x) { scanf("%lf", &x); }
void sf(char *x) { scanf("%s", x); }
void sf(long long &x) { scanf("%I64d", &x); }
void pf(int x) { printf("%d", x); }
void pf(char x) { printf("%c", x); }
void pf(double x) { printf("%f", x); }
void pf(char *x) { printf("%s", x); }
void pf(long long x) { printf("%I64d", x); }
void pf() { printf("\n"); }
const long long mod = 1e9 + 7;
const int INF = 0x7ffffff;
const long long LINF = 0x7fffffffffffffff;
using namespace std;
long long q_pow(long long x, long long y) {
  long long res = 1;
  while (y) {
    if (y & 1) res = (res * x) % mod;
    y >>= 1;
    x = (x * x) % mod;
  }
  return res;
}
long long inv(long long x) { return q_pow(x, mod - 2); }
int Read() {
  int x = 0, F = 1;
  char C = getchar();
  while (C < '0' || C > '9') {
    if (C == '-') F = -F;
    C = getchar();
  }
  while (C >= '0' && C <= '9') {
    x = x * 10 - '0' + C, C = getchar();
  }
  return x * F;
}
int Trans() {
  char c;
  sf(c);
  int res;
  res = c - '0';
  return res;
}
int main() {
  int n, k;
  char tt;
  cin >> n >> k;
  getchar();
  map<char, int> M;
  for (int i = 0; i < n; i++) {
    scanf("%c", &tt);
    M[tt]++;
    if (M[tt] > k) {
      puts("NO");
      return 0;
    }
  }
  puts("YES");
  return 0;
}
