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.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.StringTokenizer;

public class point {
	
	public static void main(String args[]) throws IOException {
		Scanner zizo=new Scanner (System.in);
		PrintWriter wr=new PrintWriter(System.out);
		
		int n=zizo.nextInt();
		int k=zizo.nextInt();
		int[]a=new int[28];
		Arrays.fill(a,-1);
		int c=0;
		char[]ch=zizo.next().toLowerCase().toCharArray();
		for(int i=0;i<ch.length;i++) {
			char x=ch[i];
			if(a[x-'a']==-1)c++;
			a[x-'a']=i;
		}
		int open=0;
		boolean[]flag=new boolean[28];
		
		for(int i=0;i<ch.length;i++) {
			if(flag[ch[i]-'a']==false) {
				flag[ch[i]-'a']=true;
				open++;
			}if(a[ch[i]-'a']==i)open--;
			if(open>k) {
				System.out.println("YES");
				return;
			}
		}System.out.println("NO");
		
		
		wr.close();
	}
}

class DSU{
	int[]p,size;
	DSU(int n){
		p=new int[n];
		size=new int[n];
		for(int i=0;i<n;i++) {
			p[i]=i;size[i]=1;
		}
	}
	int findSet(int x) {
		return p[x]==x?x:(p[x]=findSet(p[x]));
	}
	void union(int u,int v) {
		int x=findSet(u);
		int y=findSet(v);
		if(x==y)return;
		if(size[x]>=size[y]) {
			p[y]=x;size[x]+=size[y];
		}else {
			p[x]=y;size[y]+=size[x];
		}
	}
	boolean sameSet(int x,int y) {
		return findSet(x)==findSet(y);
	}
}

class Scanner {
	StringTokenizer st;
	BufferedReader br;

	public Scanner(InputStream s) {
		br = new BufferedReader(new InputStreamReader(s));
	}

	public String next() throws IOException {
		while (st == null || !st.hasMoreTokens())
			st = new StringTokenizer(br.readLine(), " ");
		return st.nextToken();
	}

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

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

	public String nextLine() throws IOException {
		return br.readLine();
	}

	public boolean ready() throws IOException {
		return br.ready();
	}

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

}