#include<stdio.h>
#define MAX_LONG 75001
char T[MAX_LONG << 1];
char S[MAX_LONG];
int next[MAX_LONG << 1];
int flag[MAX_LONG];
int getLen(char *string){
char *p = string;
while (*p != '\0'){
p++;
}
return p - string;
}
int main(){
freopen("input1.txt", "r", stdin);
scanf("%s%s", T, S);
int TLen = getLen(T);
T[TLen] = '#';
int SLen = getLen(S);
int TIndex = TLen + 1;;
int SIndex;
for (SIndex = 0; SIndex < SLen; SIndex++){
T[TIndex++] = S[SIndex];
}
T[TIndex] = '\0';
int newTLen = TLen + SLen + 1;
int prefix = -1;
int suffix = 0;
next[0] = -1;
while (suffix < newTLen){
if (-1 == prefix || T[suffix] == T[prefix]){
prefix++;
suffix++;
next[suffix] = prefix;
} else {
prefix = next[prefix];
}
}
TIndex = newTLen;
while (TIndex > TLen + 1){
if (next[TIndex] == 0){
printf("Yes\n");
return 0;
}
if (TIndex - (TLen + 1) - 1 >= 0){
flag[TIndex - (TLen + 1) - 1] = 1;
}
TIndex -= next[TIndex];
}
printf("No\n");
for (SIndex = 0; SIndex < SLen; SIndex++){
printf("%c", S[SIndex]);
if (flag[SIndex] == 1){
printf(" ");
}
}
printf("\n");
return 0;
}