import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public String solution(String s, String t) {
String answer = "YES";
//필수 과목의 순서가 어긋났는지만 판단하면 된다.
//큐에 필수과목 순서대로 미리 넣어놓는다.
//나머지 수업설계를 탐색
//큐에 해당 수업이 있는지 + 큐의 맨 앞인지 확인
//true면 pop 시키고 그 다음을 진행
//큐가 비어있으면 true
//C B는 바로 꺼내진다.
//D는 큐에 포함 X 그 다음 A 꺼낸다.
//CBA가 아니라 BCA면 포함은 되어있으나 poll한 값이 같지 않으므로(순서에 어긋났으므로)
//return "NO"인 것!
Queue<Character> Q = new LinkedList<>();
for(char x : s.toCharArray()) Q.offer(x);
for(char x : t.toCharArray()) {
if(Q.contains(x)) {
//꺼내고나서 값을 리턴함!
//꺼내고나서 값을 리턴했는데 같지 않으면 바로 NO를 리턴해주면 된다.
if(x!=Q.poll()) return "NO";
}
}
if(!Q.isEmpty()) answer = "NO";
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String s = kb.next();
String t = kb.next();
System.out.print(T.solution(s, t));
}
}