Vitaly is a diligent student who never missed a lesson in his five years of studying in the university. He always does his homework on time and passes his exams in time. 

During the last lesson the teacher has provided two strings *s* and *t* to Vitaly. The strings have the same length, they consist of lowercase English letters, string *s* is lexicographically smaller than string *t*. Vitaly wondered if there is such string that is lexicographically larger than string *s* and at the same is lexicographically smaller than string *t*. This string should also consist of lowercase English letters and have the length equal to the lengths of strings *s* and *t*. 

Let's help Vitaly solve this easy problem!
The first line contains string *s* (1 ≤ |*s*| ≤ 100), consisting of lowercase English letters. Here, |*s*| denotes the length of the string.

The second line contains string *t* (|*t*| = |*s*|), consisting of lowercase English letters.

It is guaranteed that the lengths of strings *s* and *t* are the same and string *s* is lexicographically less than string *t*.
#A. Vitaly and Strings
#1. Caculate distance in ASCII code between charaters in the first and the second string
#2. at index "i", if the current distance is 1 or 0 and the previous distance is not 1, then character i-th of first string will be add to the the middle_string (result we want to find)
#3. if distance is different from 1 and 0 then
#	- if current character of first string is "z": then we add "a" to the middle_string
#	- otherwise add a character which after current character of first string in ascii code 

#4. In case character is "z" in the first string and previous distance right before it is 1 then replace the current character of middle string by the character at current index of second string, and add from there to the end "a". After finish, break the for loop

#5. For the result, if the middle string is different from first and second string then we print it out, otherwise print the error message


first_string = input()
second_string = input()

error_string = "No such string"
middle_string = ""
distance_array = []
previous_distance = 0

for index in range(len(first_string)):
	distance = ord(second_string[index]) - ord(first_string[index])
	if first_string[index] == "z" and previous_distance == 1:
		middle_string = middle_string[:-1]
		middle_string = middle_string + second_string[index-1]
		for i in range(index, len(first_string)):
			middle_string = middle_string + "a"
		break
		
	if (distance == 1 or distance == 0) and previous_distance != 1:
		middle_string = middle_string + first_string[index]
	else:
		if first_string[index] == "z":
			middle_string = middle_string + "a"
		else:
			middle_string = middle_string + str(chr(ord(first_string[index]) + 1))
	
	previous_distance = distance
	
print(middle_string) if (middle_string != first_string and middle_string != second_string) else print(error_string)