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

import java.io.*;
import java.util.*;
public class Main {
	public static void main(String[] args) {
		FastScanner sc = new FastScanner();
		PrintWriter pw = new PrintWriter(System.out);
		while (sc.hasNext()) {
			int n=sc.nextInt();
			int k=sc.nextInt();
			String s=sc.next();
			int[]l=new int[26];
			int[]r=new int[26];
			Arrays.fill(l, 99999999);
			for(int i=0;i<s.length();i++){
				int j=s.charAt(i)-'A';
				if(l[j]==99999999) l[j]=i;
				r[j]=i;
			}
			SegTree tree=new SegTree(n+20);
			for(int i=0;i<26;i++){
				if(l[i]!=99999999){
					tree.regupdate(l[i], r[i]+1, 1);
				}
			}
			boolean flag=false;
			for(int i=0;i<n;i++){
				if(tree.regquery(i, i+1)>k){
					flag=true;
					break;
				}
			}
			if(flag)pw.println("YES");
			else pw.println("NO");
			pw.flush();
		}
	}
}
class SegTree{
	long[]tree=new long[5000500];
	long[]lazy=new long[5000500];
	int n;
	SegTree(int n_){
		this.n=1;
		while(n<n_){
			n*=2;
		}
		Arrays.fill(tree, 0);
		Arrays.fill(lazy, 0);
	}
	void pushdown(int num,int l,int r){
		if(lazy[num]!=0){
			tree[num*2+1]+=lazy[num]*((l+r)/2-l);
			tree[num*2+2]+=lazy[num]*(r-(l+r)/2);
			lazy[num*2+1]+=lazy[num]*((l+r)/2-l);
			lazy[num*2+2]+=lazy[num]*(r-(l+r)/2);
			lazy[num]=0;
		}
	}
	void update(int num,int l,int r,long add,int x,int y){
		if(r<=x||l>=y)return;
		if(l<=x&&r>=y){
			tree[num]+=add*(y-x);
			lazy[num]+=add*(y-x);
			return;
		}
		pushdown(num,x,y);
		update(num*2+1,l,r,add,x,(x+y)/2);
		update(num*2+2,l,r,add,(x+y)/2,y);
		tree[num]=tree[num*2+1]+tree[num*2+2];  
	}
	void regupdate(int l,int r,int add){
		 update(0,l,r,add,0,n);
	}
	long regquery(int l,int r){
		return query(0,l,r,0,n);
	}
	long query(int num,int l,int r,int x,int y){
		if(r<=x||l>=y)return 0;
		if(l<=x&&r>=y){
			return tree[num];
		}
		pushdown(num,x,y);
		long left=query(num*2+1,l,r,x,(x+y)/2);
		long right=query(num*2+2,l,r,(x+y)/2,y);
		return left+right;
	}
}
class FastScanner {
	BufferedReader br;
	StringTokenizer st;

	public FastScanner() {
		try {
			br = new BufferedReader(new InputStreamReader(System.in),32768);
			st = new StringTokenizer("");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public boolean hasNext() {
		while (!st.hasMoreTokens()) {
			String line = nextLine();
			if (line == null) {
				return false;
			}
			st = new StringTokenizer(line);
		}
		return true;
	}

	public String next() {
		while(!st.hasMoreTokens()){
			st=new StringTokenizer(nextLine());
		}
		return st.nextToken();
	}

	public int nextInt() {
		return Integer.parseInt(next());
	}

	public long nextLong() {
		return Long.parseLong(next());
	}

	public double nextDouble() {
		return Double.parseDouble(next());
	}

	public String nextLine() {
		String line = "";
		try {
			line = br.readLine();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return line;
	}
}