#include<bits/stdc++.h>
using namespace std;
map<char,int> p1;
int main(){
string s1,s2;
cin>>s1>>s2;
if(s1.size()<s2.size()){
swap(s1,s2);
}
string s11,s22(s2);
for(auto it:s1){
if (s11.find(it) == string::npos) {
s11.push_back(it);
}
}
for(auto it:s11){
p1.insert(make_pair(it,s2.size()+1));
}
for(auto it:s22){
int dd=s22.size()-s22.find(it);
s22.replace(s22.find(it),1," ");
if(p1[it]==s22.size()+1){
p1[it]=dd;
}else if(dd<p1[it]){
p1[it]=dd;
}
}
for(auto it = p1.begin(); it != p1.end(); ++it){
}
int d=0,i;
for(i=0;i<s2.size();i++){
if(s1[d]==s2[i]){
d++;
}else{
if(d+s2.size()>=s1.size()){
break;
}
d+=p1[s1[d+s2.size()]];
i=-1;
}
}
if(i==s2.size()){
cout<<s2<<" is substring of "<<s1;
}else{
cout<<"No substring";
}
return 0;
}