#include <bits/stdc++.h>
using namespace std;
int prime[1000006];
long long int pow(long long int a, long long int b);
void sieve(int n);
long long int divisor(long long int n);
struct cmp {
  bool operator()(pair<string, int> a, pair<string, int> b) {
    if (a.first == b.first) return a.second < b.second;
    return a.first < b.first;
  }
};
char str1[200], str2[200];
int main() {
  cin >> str1 >> str2;
  int l = strlen(str1), k, i;
  k = 0;
  for (i = l - 1; i >= 0; i--) {
    if (str1[i] == 'z')
      str1[i] = 'a';
    else {
      str1[i] += 1;
      break;
    }
  }
  for (i = 0; i < l; i++) {
    if (str1[i] != str2[i]) {
      cout << str1;
      return 0;
    }
  }
  cout << "No such string";
}
void sieve(int n) {
  int i, j;
  prime[1] = 1;
  for (i = 4; i <= n; i += 2) prime[i] = 1;
  for (i = 3; i * i <= n; i += 2) {
    if (prime[i] == 0) {
      for (j = i << 1; j <= n; j += i) prime[j] = 1;
    }
  }
}
long long int divisor(long long int n) {
  long long int k = 1, i, c = 0;
  ;
  for (i = 2; (i * i) <= n; i++) {
    c = 0;
    while ((n % i) == 0) {
      n /= i;
      c++;
    }
    if (c != 0) k = k * (c + 1);
  }
  if (n != 1) k = k * 2;
  return k;
}
long long int pow(long long int a, long long int b) {
  if (b == 0) return 1;
  if (b == 1) return a;
  long long int temp = pow(a, b / 2);
  long long int x;
  if (b % 2 == 0)
    x = (temp * temp) % 1000000007;
  else
    x = (((temp * temp) % 1000000007) * a) % 1000000007;
  return x;
}
