Problem:
Score : 200 points

Problem Statement

You are given strings s and t, consisting of lowercase English letters.
You will create a string s' by freely rearranging the characters in s.
You will also create a string t' by freely rearranging the characters in t.
Determine whether it is possible to satisfy s' < t' for the lexicographic order.

Notes

For a string a = a_1 a_2 ... a_N of length N and a string b = b_1 b_2 ... b_M of length M, we say a < b for the lexicographic order if either one of the following two conditions holds true:

N < M and a_1 = b_1, a_2 = b_2, ..., a_N = b_N.

There exists i (1 \leq i \leq N, M) such that a_1 = b_1, a_2 = b_2, ..., a_{i - 1} = b_{i - 1} and a_i < b_i. Here, letters are compared using alphabetical order.

For example, xy < xya and atcoder < atlas.

Constraints

The lengths of s and t are between 1 and 100 (inclusive).

s and t consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:

s
t

Output

If it is possible to satisfy s' < t', print Yes; if it is not, print No.

Sample Input 1

yx
axy

Sample Output 1

Yes

We can, for example, rearrange yx into xy and axy into yxa. Then, xy < yxa.

Sample Input 2

ratcode
atlas

Sample Output 2

Yes

We can, for example, rearrange ratcode into acdeort and atlas into tslaa. Then, acdeort < tslaa.

Sample Input 3

cd
abc

Sample Output 3

No

No matter how we rearrange cd and abc, we cannot achieve our objective.

Sample Input 4

w
ww

Sample Output 4

Yes

Sample Input 5

zzz
zzz

Sample Output 5

No

Solution in C++14 (GCC 5.4.1) (judge verdict: Runtime Error)


#include <vector>
#include <string>

#include <iostream>
using namespace std;

int main(){
    string t;
    string s;
    cin>>s;
    cin>>t;
    vector<int> tt=vector<int>(t.length());
    vector<int> ss=vector<int>(t.length());
    
    for (int i=0; i<t.length(); i++) {
        int k=0;
        
        if (t[i]=='a')k=0;
        if (t[i]=='b')k=1;
        if (t[i]=='c')k=2;
        if (t[i]=='d')k=3;
        if (t[i]=='e')k=4;
        if (t[i]=='f')k=5;
        if (t[i]=='g')k=6;
        if (t[i]=='h')k=7;
        if (t[i]=='i')k=8;
        if (t[i]=='j')k=9;
        if (t[i]=='k')k=10;
        if (t[i]=='l')k=11;
        if (t[i]=='m')k=12;
        if (t[i]=='n')k=13;
        if (t[i]=='o')k=14;
        if (t[i]=='p')k=15;
        if (t[i]=='q')k=16;
        if (t[i]=='r')k=17;
        if (t[i]=='s')k=18;
        if (t[i]=='t')k=19;
        if (t[i]=='u')k=20;
        if (t[i]=='v')k=21;
        if (t[i]=='w')k=22;
        if (t[i]=='x')k=23;
        if (t[i]=='y')k=24;
        if (t[i]=='z')k=25;
        
        tt[i]=k;
    }
    for (int i=0; i<s.length(); i++) {
        int k=0;
        
        if (t[i]=='a')k=0;
        if (t[i]=='b')k=1;
        if (t[i]=='c')k=2;
        if (t[i]=='d')k=3;
        if (t[i]=='e')k=4;
        if (t[i]=='f')k=5;
        if (t[i]=='g')k=6;
        if (t[i]=='h')k=7;
        if (t[i]=='i')k=8;
        if (t[i]=='j')k=9;
        if (t[i]=='k')k=10;
        if (t[i]=='l')k=11;
        if (t[i]=='m')k=12;
        if (t[i]=='n')k=13;
        if (t[i]=='o')k=14;
        if (t[i]=='p')k=15;
        if (t[i]=='q')k=16;
        if (t[i]=='r')k=17;
        if (t[i]=='s')k=18;
        if (t[i]=='t')k=19;
        if (t[i]=='u')k=20;
        if (t[i]=='v')k=21;
        if (t[i]=='w')k=22;
        if (t[i]=='x')k=23;
        if (t[i]=='y')k=24;
        if (t[i]=='z')k=25;
        
        ss[i]=k;
    }
    
    int ln;

    if (s.length()<t.length()) {
        ln=t.length();
    }
    else{
        ln=s.length();
    }
    
    for (int m=0; m<t.length(); m++) {
        for (int i=0; i<t.length()-1; i++) {
            if (tt[i]>tt[i+1]) {
                tt[i]=tt[i+1];
                tt[i+1]=tt[i];
            }
        }
    }
    
    for (int m=0; m<s.length(); m++) {
        for (int i=0; i<s.length()-1; i++) {
            if (ss[i]>ss[i+1]) {
                ss[i]=ss[i+1];
                ss[i+1]=ss[i];
            }
        }
    }
    
    for (int i=0; i<ln; i++) {
        if (ss[i]<tt[i]) {
            cout<<"Yes";
            i=ln;
        }
        else if (ss[i]==tt[i]){
        }
        else{
            cout<<"No";
            i=ln;
        }
    }
   
    return 0;
}