You've got a string $S$ consisting of $n$ lowercase English letters from your friend. It turned out that this is a number written in poman numerals. The poman numeral system is long forgotten. All that's left is the algorithm to transform number from poman numerals to the numeral system familiar to us. Characters of $S$ are numbered from $1$ to $n$ from left to right. Let's denote the value of $S$ as $f(S)$, it is defined as follows:

If $|S| > 1$, an arbitrary integer $m$ ($1 \le m < |S|$) is chosen, and it is defined that $f(S) = -f(S[1, m]) + f(S[m + 1, |S|])$, where $S[l, r]$ denotes the substring of $S$ from the $l$-th to the $r$-th position, inclusively.

Otherwise $S = c$, where $c$ is some English letter. Then $f(S) = 2^{pos(c)}$, where $pos(c)$ is the position of letter $c$ in the alphabet ($pos($a$) = 0$, $pos($z$) = 25$).

Note that $m$ is chosen independently on each step.

Your friend thinks it is possible to get $f(S) = T$ by choosing the right $m$ on every step. Is he right?


-----Input-----

The first line contains two integers $n$ and $T$ ($2 \leq n \leq 10^5$, $-10^{15} \leq T \leq 10^{15}$).

The second line contains a string $S$ consisting of $n$ lowercase English letters.


-----Output-----

Print "Yes" if it is possible to get the desired value. Otherwise, print "No".

You can print each letter in any case (upper or lower).


-----Examples-----

Input
2 -1
ba
Output
Yes
Input
3 -7
abc
Output
No
Input
7 -475391
qohshra
Output
Yes


-----Note-----

In the second example, you cannot get $-7$. But you can get $1$, for example, as follows:

First choose $m = 1$, then $f($abc$) = -f($a$) + f($bc$)$

$f($a$) = 2^0 = 1$

$f($bc$) = -f($b$) + f($c$) = -2^1 + 2^2 = 2$

In the end $f($abc$) = -1 + 2 = 1$

Source: codeforces | Difficulty: HARD
Tags: String algorithms

Bit manipulation

Mathematics

Greedy algorithms


Solutions:
(_, T) = [int(x) for x in input().split()]
L = [ord(x) - ord('a') for x in input()]
T -= 2 ** L[-1]
T += 2 ** L[-2]
L = L[:-2]
L.sort(reverse=True)
for c in L:
	T += (1 if T < 0 else -1) * (1 << c)
print('Yes' if T == 0 else 'No')


import sys
input = sys.stdin.readline
(n, T) = map(int, input().split())
S = input().strip()
L = [ord(s) - 97 for s in S]
T += pow(2, L[-2]) - pow(2, L[-1])
L = L[:-2]
L.sort(reverse=True)
for i in range(len(L)):
	if T > 0:
		T -= 1 << L[i]
	else:
		T += 1 << L[i]
if T == 0:
	print('Yes')
else:
	print('No')


(n, t) = input().split()
(n, t) = (int(n), int(t))
s = list(input())
if n == 1:
	if 2 ** (ord(s) - 97) == t:
		print('Yes')
	else:
		print('No')
elif n == 2:
	if 2 ** (ord(s[1]) - 97) - 2 ** (ord(s[0]) - 97) == t:
		print('Yes')
	else:
		print('No')
else:
	t -= 2 ** (ord(s[-1]) - 97) - 2 ** (ord(s[-2]) - 97)
	t = abs(t)
	s = s[:-2]
	count = [0] * 32
	for char in s:
		count[ord(char) - 97] += 1
	for i in range(30, -1, -1):
		for x in range(count[i]):
			if t > 0:
				t -= 1 << i
			else:
				t += 1 << i
	if t == 0:
		print('Yes')
	else:
		print('No')