#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ULL;
char s1[1000010],s2[1000010];
ULL p[1000010],H[1000010];
ULL h(char s[]){
ULL sum=0;
int len=strlen(s+1);
for(int i=1;i<=len;i++) sum=sum*131+(s[i]-'a'+1);
return sum;
}
int main(){
cin>>s1+1>>s2+1;
int len1=strlen(s1+1),len2=strlen(s2+1);
if(len1>len2) swap(s1,s2);
else if(len1==len2) {
if(h(s1)==h(s2)){
cout<<s1+1<<" is substring of "<<s2+1;
return 0;
}
else {
cout<<"No substring";
return 0;
}
}
int small_s=h(s1);
len1=strlen(s1+1);
len2=strlen(s2+1);
p[0]=1;
for(int i=1;i<=len2;i++){
H[i]=H[i-1]*131+(s2[i]-'a'+1);
p[i]=p[i-1]*131;
}
bool flag=0;
for(int i=1;i+len1-1<=len2;i++){
if(small_s==H[i+len1-1]-H[i-1]*p[len1]) {
flag=1;
break;
}
}
if(flag) cout<<s1+1<<" is substring of "<<s2+1;
else cout<<"No substring";
return 0;
}