//规则:出牌牌型有5种
//牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是否能够压过对方出牌。
//[1]一张 如4 则5...9可压过
//[2]两张 如44 则55,66,77,...,99可压过
//[3]三张 如444 规则如[2]
//[4]四张 如4444 规则如[2]
//[5]五张 牌型只有12345 23456 34567 45678 56789五个,后面的比前面的均大。
//输入: 输入有多组数据。
//每组输入两个字符串(字符输出: 压过输出YES 否则NO。
//串大小不超过100)a,b。a字符串代表手中牌,b字符串代表处的牌。
//样例输入: 12233445566677
//33
//123344556667799
//888
//样例输出: YES
//NO
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int cmp(char a,char b)
{
return a<b;
}
void main()
{
char s1[100];
char s2[100];
gets(s1);
gets(s2);
int len1=strlen(s1);
int len=strlen(s2);
sort(s1,s1+len1,cmp);
int i=0;
char *a="YES";
char *b="NO";
char *c;
if(len==1)
{
while(s1[i]!='\0')
{
if(s1[i]>s2[0])
{
c=a;
break;
}
else
i++;
}
if(i==len)
c=b;
}
if(len==2)
{
while(s1[i]!='\0')
{
if(len-i<2)
{
c=b;
break;
}
else
{
if(s1[i]>s2[0]&&s1[i+1]==s1[i])
{
c=a;
break;
}
else
i+=2;
}
}
if(i==len)
c=b;
}
if(len==3)
{
while(s1[i]!='\0')
{
if(len-i<3)
{
c=b;
break;
}
else
{
if(s1[i]>s2[0]&&s1[i+1]==s1[i]&&s1[i+2]==s1[i])
{
c=a;
break;
}
else
i+=4;
}
}
if(i==len)
c=b;
}
if(len==4)
{
while(s1[i]!='\0')
{
if(len-i<4)
{
c=b;
break;
}
else
{
if(s1[i]>s2[0]&&len-i>=4&&s1[i+1]==s1[i]&&s1[i+2]==s1[i]&&s1[i+3]==s1[i])
{
c=a;
break;
}
else
i+=4;
}
}
if(i==len)
c=b;
}
if(len==5)
{
while(s1[i]!='\0')
{
if(len-i<5)
{
c=b;
break;
}
else
{
if(s1[i]>s2[0]&&len-i>=5&&s1[i+1]-'1'==s1[i]&&s1[i+2]-'1'==s1[i+1]&&s1[i+3]-'1'==s1[i+2]&&s1[i+4]-'1'==s1[i+3])
{
c=a;
break;
}
else
i++;
}
}
if(i==len)
c=b;
}
cout<<c<<endl;
}