#include<bits/stdc++.h>
using namespace std;
string s1,s2;
int a,b;
int arr[100][200];
int arr2[100][200];
void show(string s, int i, int j)
{
if(i==0 || j==0) return;
if(arr[i][j]==arr[i][j-1]) show(s,i,j-1);
else if(arr[i][j]==arr[i-1][j]) show(s,i-1,j);
else
{
show(s,i-1,j-1);
cout << s[i-1];
}
}
int main()
{
cin >> s1 >> s2;
a=s1.length();
b=s2.length();
for(int i=1;i<=a;i++)
{
for(int j=1;j<=b;j++)
{
if(s1[i-1]==s2[j-1])
{
arr[i][j]=arr[i-1][j-1]+1;
}
else arr[i][j]=max(arr[i-1][j],arr[i][j-1]);
}
}
cout << arr[a][b] << endl;
show(s1,a,b);
cout << endl;
cout << "Insertions: " << a-arr[a][b] << endl;
cout << "Deletions: " << b-arr[a][b] << endl;
cout << "Insertions: " << b-arr[a][b] << endl;
cout << "Deletions: " << a-arr[a][b] << endl;
string s3=s1;
reverse(s3.begin(),s3.end());
for(int i=1;i<=a;i++)
{
for(int j=1;j<=a;j++)
{
if(s1[i-1]==s3[j-1])
{
arr2[i][j]=arr2[i-1][j-1]+1;
}
else arr2[i][j]=max(arr2[i-1][j],arr2[i][j-1]);
}
}
cout << "Length of longest palindromic subsequence: " << arr2[a][a] << endl;
if(arr[a][b]==s1.length()) cout << "Yes" << endl;
else cout << "NO" << endl;
}
/*
if
x[i]==y[j]->lcs(x[i-1],y[j-1])+1
else
max(lcs(i-1,j),lcs(i,j-1))
*/
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RyaW5nIHMxLHMyOwppbnQgYSxiOwppbnQgYXJyWzEwMF1bMjAwXTsKaW50IGFycjJbMTAwXVsyMDBdOwoKdm9pZCBzaG93KHN0cmluZyBzLCBpbnQgaSwgaW50IGopCnsKICAgIGlmKGk9PTAgfHwgaj09MCkgcmV0dXJuOwogICAgaWYoYXJyW2ldW2pdPT1hcnJbaV1bai0xXSkgc2hvdyhzLGksai0xKTsKICAgIGVsc2UgaWYoYXJyW2ldW2pdPT1hcnJbaS0xXVtqXSkgc2hvdyhzLGktMSxqKTsKICAgIGVsc2UKICAgIHsKICAgICAgICBzaG93KHMsaS0xLGotMSk7CiAgICAgICAgY291dCA8PCBzW2ktMV07CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgY2luID4+IHMxID4+IHMyOwogICAgYT1zMS5sZW5ndGgoKTsKICAgIGI9czIubGVuZ3RoKCk7CiAgICBmb3IoaW50IGk9MTtpPD1hO2krKykKICAgIHsKICAgICAgICBmb3IoaW50IGo9MTtqPD1iO2orKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKHMxW2ktMV09PXMyW2otMV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFycltpXVtqXT1hcnJbaS0xXVtqLTFdKzE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBhcnJbaV1bal09bWF4KGFycltpLTFdW2pdLGFycltpXVtqLTFdKTsKICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGFyclthXVtiXSA8PCBlbmRsOwogICAgc2hvdyhzMSxhLGIpOwogICAgY291dCA8PCBlbmRsOwogICAgY291dCA8PCAiSW5zZXJ0aW9uczogIiA8PCBhLWFyclthXVtiXSA8PCBlbmRsOwogICAgY291dCA8PCAiRGVsZXRpb25zOiAiIDw8IGItYXJyW2FdW2JdIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJJbnNlcnRpb25zOiAiIDw8IGItYXJyW2FdW2JdIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJEZWxldGlvbnM6ICIgPDwgYS1hcnJbYV1bYl0gPDwgZW5kbDsKICAgIHN0cmluZyBzMz1zMTsKICAgIHJldmVyc2UoczMuYmVnaW4oKSxzMy5lbmQoKSk7CiAgICBmb3IoaW50IGk9MTtpPD1hO2krKykKICAgIHsKICAgICAgICBmb3IoaW50IGo9MTtqPD1hO2orKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKHMxW2ktMV09PXMzW2otMV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFycjJbaV1bal09YXJyMltpLTFdW2otMV0rMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGFycjJbaV1bal09bWF4KGFycjJbaS0xXVtqXSxhcnIyW2ldW2otMV0pOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgIkxlbmd0aCBvZiBsb25nZXN0IHBhbGluZHJvbWljIHN1YnNlcXVlbmNlOiAiIDw8IGFycjJbYV1bYV0gPDwgZW5kbDsKICAgIGlmKGFyclthXVtiXT09czEubGVuZ3RoKCkpIGNvdXQgPDwgIlllcyIgPDwgZW5kbDsKICAgIGVsc2UgY291dCA8PCAiTk8iIDw8IGVuZGw7Cn0KCi8qCmlmCiAgICB4W2ldPT15W2pdLT5sY3MoeFtpLTFdLHlbai0xXSkrMQplbHNlCiAgICBtYXgobGNzKGktMSxqKSxsY3MoaSxqLTEpKQoqLwo=