세포 분열
시간 제한3초메모리 제한512 MB
N개 세포 유형 각각의 돌연변이 규칙과 초기 세포가 주어질 때, 관찰된 최종 문자열이 분열 과정으로 만들어질 수 있는지 판정한다.
문제
대학원생 시철이는 대학원에서도 복전을 한다. 이번엔 무려 생명공학이다!
과제에 짓눌리는 걸 좋아하는 시철이답게, 오늘도 어김없이 세포 배양 과제를 하고 있다.
시철이가 배양하는 세포는 상당히 특이한 성질이 있다.
- 모든 세포는 분열할 때 좌우로 갈라진다. 세포 분열이 끝나고 나면, 같은 종류의 세포가 하나 더 만들어진다.
- 때때로 세포 분열 중 돌연변이가 발생해, 다른 종류의 세포가 하나 만들어질 수 있다. 돌연변이가 일어나면, 이전과 같은 세포 개와 이전과 다른 세포 개가 만들어지고 이 둘의 순서는 무작위로 정해진다.
- 세포 종류에 따라서 돌연변이가 아예 발생하지 않을 수도 있다. 만약 발생한다면, 오직 다른 한 종류로만 가능하다.
- 분열하는 세포는 무작위로 정해지고, 동시에 여러 세포가 분열할 수 있다.
불타는 금요일, 시철이는 배양지에 세포 하나를 올려두었다. 다음 주 월요일에 시철이가 연구실로 돌아왔을 땐 모든 세포 분열이 멈춰있는 상태였다. 곧바로 시철이는 이 배양지에 있는 세포들을 관찰했지만, 돌연변이가 너무 많이 생기는 바람에 이 배양지가 본인의 배양지인지 동기의 배양지인지 헷갈리기 시작했다.
과연 배양지에 있는 세포들은 시철이가 올려둔 초기 세포에서 분열이 된 것일까?
입력
첫 번째 줄에 세포 종류의 개수 가 주어진다. ()
두 번째 줄에 돌연변이를 나타내는 알파벳 소문자 가 공백 단위로 주어진다. 이것은 번째 알파벳에 해당하는 세포의 분열 중 돌연변이가 발생해 번째 알파벳에 해당하는 세포가 생길 수 있음을 뜻한다. 가 번째 알파벳일 경우, 해당 종류의 세포는 돌연변이가 발생하지 않는 것을 의미한다. 는 부터 번째 알파벳 중 하나다.
세 번째 줄에 초기 세포의 종류를 나타내는 알파벳 소문자 가 주어진다. 는 부터 번째 알파벳 중 하나다.
네 번째 줄에 시철이가 관찰한 세포 배열을 나타내는 가 주어진다. 의 모든 원소는 부터 번째 알파벳 소문자 중 하나고, 공백 없이 한 줄에 주어진다. ()
출력
관찰한 세포 배열이 초기 세포로부터 생겨날 수 있다면 YES를 출력한다.
그렇지 않으면 NO를 출력한다.