You are given a string $s$. And you have a function $f(x)$ defined as:
f(x) = 1, if $x$ is a vowel
f(x) = 0, if $x$ is a constant

Your task is to apply the above function on all the characters in the string s and convert 
the obtained binary string in decimal number $M$.
Since the number $M$ can be very large, compute it modulo $10^9+7$. 

-----Input:-----
- The first line of the input contains a single integer $T$ i.e the no. of test cases. 
- Each test line contains one String $s$ composed of lowercase English alphabet letters. 

-----Output:-----
For each case, print a single line containing one integer $M$ modulo $10^9 + 7$.

-----Constraints-----
- $1 ≤ T ≤ 50$
- $|s|≤10^5$

-----Subtasks-----
- 20 points : $|s|≤30$
- 80 points : $ \text{original constraints}$

-----Sample Input:-----
1
hello

-----Sample Output:-----
9

Source: codechef | Difficulty: UNKNOWN_DIFFICULTY


Solutions:
t = int(input())
MOD = 10 ** 9 + 7
l = ['a', 'e', 'i', 'o', 'u']
for i in range(t):
	s = input()
	k = []
	for j in s:
		if j in l:
			k.append(1)
		else:
			k.append(0)
	r = bin(int(''.join(map(str, k)), 2) << 1)
	print(int(r, 2) // 2 % MOD)


for _ in range(int(input())):
	s = input()
	ss = list(s)
	for (n, i) in enumerate(ss):
		if i in 'aeiou':
			ss[n] = 1
		else:
			ss[n] = 0
	print(int(''.join(map(str, ss)), 2))


for _ in range(int(input())):
	a = input()
	b = []
	for i in a:
		if i in ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']:
			b.append(1)
		else:
			b.append(0)
	c = 0
	l = len(a)
	for i in range(l):
		if b[-i - 1]:
			c += 1 << i
	print(c)


def val(c):
	if c >= '0' and c <= '9':
		return ord(c) - ord('0')
	else:
		return ord(c) - ord('A') + 10

def toDeci(str, base):
	llen = len(str)
	power = 1
	num = 0
	for i in range(llen - 1, -1, -1):
		if val(str[i]) >= base:
			print('Invalid Number')
			return -1
		num += val(str[i]) * power
		power = power * base
	return num
t = int(input())
for _ in range(t):
	s = input()
	s1 = []
	for i in range(len(s)):
		if s[i] == 'a' or s[i] == 'e' or s[i] == 'i' or (s[i] == 'o') or (s[i] == 'u'):
			s1.append(1)
		else:
			s1.append(0)
	s2 = ''.join([str(elem) for elem in s1])
	print(toDeci(s2, 2))


for _ in range(int(input())):
	a = input()
	b = []
	for i in a:
		if i in ['a', 'e', 'i', 'o', 'u']:
			b.append(1)
		else:
			b.append(0)
	c = 0
	l = len(a)
	for i in range(l):
		if b[-i - 1]:
			c += 1 << i
	print(c)


t = int(input())
for _ in range(t):
	s = input()
	s1 = []
	for i in range(len(s)):
		if s[i] == 'a' or s[i] == 'e' or s[i] == 'i' or (s[i] == 'o') or (s[i] == 'u'):
			s1.append(1)
		else:
			s1.append(0)
	s2 = ''.join([str(elem) for elem in s1])
	print(int(s2, 2))


t = int(input())
for i in range(0, t):
	s = input()
	l = len(s)
	ans = 0
	for j in range(0, l):
		if s[j] == 'a' or s[j] == 'e' or s[j] == 'i' or (s[j] == 'o') or (s[j] == 'u'):
			c = 1
		else:
			c = 0
		ans = ans + c * pow(2, l - 1)
		l = l - 1
	print(ans % 1000000007)


vowel = ['a', 'e', 'i', 'o', 'u']

def f(n):
	return 1 if n in vowel else 0
for _ in range(int(input())):
	a = input()
	num = ''
	for i in a:
		num += str(f(i))
	print(int(num, 2) % 1000000007)


for _ in range(int(input())):
	S = input()
	M = 1000000007
	l = []
	for i in range(len(S)):
		if S[i] == 'a' or S[i] == 'e' or S[i] == 'i' or (S[i] == 'o') or (S[i] == 'u'):
			l.append(1)
		else:
			l.append(0)
	k = ''.join((str(x) for x in l))
	N = int(k, 2) % M
	print(N)


def fun(x):
	if x in ['a', 'e', 'i', 'o', 'u']:
		return '1'
	else:
		return '0'
try:
	t = int(input())
	j = 0
	while j < t:
		s = ''
		st = input()
		if not st.isalpha:
			return
		for i in st:
			va = fun(i)
			s = s + va
		a = int(s, 2)
		print(a % 1000000007)
except:
	return


t = int(input())
for x in range(t):
	ss = ''
	s = input()
	for i in s:
		if i in 'aeiou':
			ss = ss + '1'
		else:
			ss = ss + '0'
	l = len(ss)
	res = 0
	for i in range(l):
		res = res + int(ss[i]) * pow(2, l - 1 - i, 1000000007)
		res = res % 1000000007
	print(res)


t = int(input())
for i in range(t):
	st = input()
	li = list(map(lambda c: str(int(c.lower() in ['a', 'i', 'e', 'o', 'u'])), st))
	print(int(''.join(li), 2) % (10 ** 9 + 7))


n = int(input())
m = pow(10, 9) + 7
for i in range(n):
	s = list(input())
	c = [None] * len(s)
	for j in range(len(s)):
		c[j] = -1
	for j in range(len(s)):
		if s[j] == 'a' or s[j] == 'i' or s[j] == 'e' or (s[j] == 'o') or (s[j] == 'u'):
			c[j] = 1
		else:
			c[j] = 0
	d = len(s) - 1
	a = 0
	for j in range(0, len(s)):
		k = pow(2, d)
		a += k * c[j]
		d -= 1
	print(a % m)


t = int(input())
for j in range(t):
	s = input()
	n = len(s)
	e = 0
	for i in range(n):
		ch = s[i]
		if ch == 'a' or ch == 'e' or ch == 'i' or (ch == 'o') or (ch == 'u'):
			e += pow(2, n - i - 1, 1000000007)
			e = e % 1000000007
	print(int(e))