433 3
FZDDHMJGBZCHFUXBBPIEBBEFDWOMXXEPOMDGSMPIUZOMRZQNSJAVNATGIWPDFISKFQXJNVFXPHOZDAEZFDAHDXXQKZMGNSGKQNWGNGJGJZVVITKNFLVCPMZSDMCHBTVAWYVZLIXXIADXNYILEYNIQHKMOGMVOCWGHCWIYMPEPADSJAAKEGTUSEDWAHMNYJDIHBKHVUHLYGNGZDBULRXLSAJHPCMNWCEAAPYMHDTYWPADOTJTXTXUKLCHWKUSZRHEKQEFPVJEJJHRWCKYOIWALRTIBUMNOCRXLSIKQCJVQXEPGOHRUDJDKMUUUDORURWXJNVRVMNOUNRFKSVMTMZGOIJLXEPAMVGESOADYIGZXRBJDIWKNOWTCSROAQTBECHTOZVSQUOOJRZIBAUHMKAXDCIMDZJFMABGRNTGPUJAUNFPFWCJG
 6 2
ABCABC
 41 19
TMEYYIIELFDCMBDKWWKYNRNDUPRONYROXQCLVQALP
 5 2
ABACA
 377 3
EADADBBBBDEAABBAEBABACDBDBBCACAADBEAEACDEAABACADEEDEACACDADABBBBDDEECBDABACACBAECBADAEBDEEBDBCDAEADBCDDACACDCCEEDBCCBBCEDBECBABCDDBBDEADEDAEACDECECBEBACBCCDCDBDAECDECADBCBEDBBDAAEBCAAECCDCCDBDDEBADEEBDCAEABBDEDBBDDEAECCBDDCDEACDAECCBDDABABEAEDCDEDBAECBDEACEBCECEACDCBABCBAAEAADACADBBBBABEADBCADEBCBECCABBDDDEEBCDEBADEBDAAABBEABADEDEAEABCEEBEEDEAEBEABCEDDBACBCCADEBAAAAAEABABBCE
 3 26
AAB
 27 1
ABCDEFGHIJKLMNOPQRSTUVWXYZA
 73 2
DEBECECBBADAADEAABEAEEEAEBEAEBCDDBABBAEBACCBEEBBAEADEECACEDEEDABACDCDBBBD
 7 2
ABCDBCD
 5 1
AZAZA
 44 15
HGJIFCGGCDGIJDHBIBGAEABCIABIGBDEADBBBAGDFDHA
 5 2
ABCAB
 8 3
ABCBCDCA
 26 1
ABCDEFGHIJKLMNOPQRSTUVWXYZ

YES
 YES
 NO
 NO
 YES
 NO
 YES
 YES
 YES
 YES
 NO
 YES
 NO
 NO

#include <bits/stdc++.h>
using namespace std;
const int inf = 0x7FFFFFFF;
struct prioritycom {
  bool operator()(const int& l, const int& r) { return l < r; }
};
template <class T>
T gcd(T a, T b) {
  T a1 = max(a, b), b1 = min(a, b);
  return b1 == 0 ? a1 : gcd(b1, a1 % b1);
}
template <typename T>
T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
template <class T>
T bigmod(T n, T p, T m) {
  if (p == 0) return 1;
  if (p % 2 == 0) {
    T t = bigmod(n, p / 2, m);
    return (t * t) % m;
  }
  return (bigmod(n, p - 1, m) * n) % m;
}
template <class string>
long long int strton(string s) {
  long long int won;
  stringstream ss;
  ss << s;
  ss >> won;
  return won;
}
template <class T>
string ntostr(T n) {
  stringstream ss;
  ss << n;
  return ss.string();
}
template <class T>
inline T mod(T n, T m) {
  return (n % m + m) % m;
}
template <class T>
bool isprime(T n) {
  if (n % 2 == 0) {
    if (n == 2)
      return true;
    else
      return false;
  }
  T m = sqrt(n);
  for (T i = 3; i <= m; i += 2) {
    if (n % i == 0) return false;
  }
  return true;
}
bool isvowel(char ch) {
  ch = toupper(ch);
  if (ch == 'A' || ch == 'U' || ch == 'I' || ch == 'O' || ch == 'E')
    return true;
  return false;
}
bool isconsonant(char ch) {
  if (isalpha(ch) && !isvowel(ch)) return true;
  return false;
}
struct data {
  long long int st;
  long long int ed;
};
data a[30];
long long int b[1000005];
int main() {
  for (long long int i = 0; i < 30; i++) {
    a[i].st = 99999999;
    a[i].ed = 0;
  }
  long long int n, k;
  string s;
  memset(b, 0, sizeof(b));
  scanf("%lld%lld", &n, &k);
  getchar();
  cin >> s;
  for (long long int i = 0; i < n; i++) {
    a[s[i] - 'A'].st = min(a[s[i] - 'A'].st, i);
    a[s[i] - 'A'].ed = max(a[s[i] - 'A'].ed, i);
  }
  for (long long int i = 0; i < 26; i++) {
    if (a[i].st <= a[i].ed) {
      b[a[i].st] += 1;
      b[a[i].ed] = -1;
    }
  }
  long long int c = 0, mx = 0;
  for (long long int i = 0; i < n; i++) {
    c += b[i];
    mx = max(mx, c);
  }
  if (mx > k)
    printf("YES\n");
  else
    printf("NO\n");
  return 0;
}
