#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str1[1001],str2[1001];
int a1[128],a2[128];
int m,n,flag;
while(cin>>str1>>str2)
{
m=n=0;
flag=0;
memset(a1,0,sizeof(a1));
memset(a2,0,sizeof(a2));
for(int i=0;i<strlen(str1);++i)
++a1[str1[i]-'0'];
for(int i=0;i<strlen(str2);++i)
++a2[str2[i]-'0'];
for(int i=0;i<128;++i)
{
if(a1[i]<a2[i])
{
flag=1;
n+=(a2[i]-a1[i]);
}
if(a1[i]>a2[i])
{
m+=(a1[i]-a2[i]);
}
}
if(flag==1)
{
cout<<"No "<<n<<endl;
}
else
{
cout<<"Yes "<<m<<endl;
}
}
return 0;
}
/*此代码错误。。不理解multiset所致
#include<iostream>
#include<string>
#include<set>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
string s1,s2;
multiset<char> set1,set2;
vector<char> v;
while(cin>>s1>>s2)
{
v.resize(s1.size()+s2.size());
for(int i=0;i<s1.size();++i)
set1.insert(s1[i]);
for(int i=0;i<s2.size();++i)
set2.insert(s2[i]);
vector<char>::iterator it=set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(),v.begin());
if(it==v.end())
{
cout<<"Yes "<<s1.size()-s2.size()<<endl;
}
else
{
cout<<"No "<<s1.size()+s2.size()-v.size()<<endl;
}
}
return 0;
}
*/