最小表示法;
#include<bits/stdc++.h>
using namespace std;
const int maxn=1000005;
char a[maxn],b[maxn];
int n;
int mp(char* s){
int i=0,j=1,k=0;
while(i<n && j<n && k<n){
int t=s[(i+k)%n]-s[(j+k)%n];
if(!t)k++;
else{
if(t>0)i+=k+1;
else j+=k+1;
if(i==j)j++;
k=0;
}
}
return min(i,j);
}
int main(){//freopen("in.in","r",stdin);
scanf("%s",a);n=strlen(a);
scanf("%s",b);
int p1=mp(a),p2=mp(b);
for(int k=0;k<n;k++)if(a[(p1+k)%n]!=b[(p2+k)%n]){printf("No\n");return 0;}
printf("Yes\n");
for(int k=0;k<n;k++)printf("%c",a[(p1+k)%n]);
}