Bobo has a string
S=s1s2…sn consists of letter `a`, `b` and `c`.
He can transform the string by inserting or deleting substrings `aa`, `bb` and `abab`.
Formally, A=u∘w∘v (`` ∘'' denotes string concatenation) can be transformed into A′=u∘v and vice versa where u, v are (possibly empty) strings and w∈{aa,bb,abab}.
Given the target string T=t1t2…tm, determine if Bobo can transform the string S into T
The first line of each test case contains a string s1s2…sn.
The second line contains a string t1t2…tm.
Output For each test case, print `Yes` if Bobo can. Print `No` otherwise.
## Constraint
* 1≤n,m≤104
* s1,s2,…,sn,t1,t2,…,tm∈{a,b,c}
* The sum of n and m does not exceed 250,000.
Sample Input
He can transform the string by inserting or deleting substrings `aa`, `bb` and `abab`.
Formally, A=u∘w∘v (`` ∘'' denotes string concatenation) can be transformed into A′=u∘v and vice versa where u, v are (possibly empty) strings and w∈{aa,bb,abab}.
Given the target string T=t1t2…tm, determine if Bobo can transform the string S into T
.
Input The input consists of several test cases and is terminated by end-of-file.
The first line of each test case contains a string s1s2…sn.
The second line contains a string t1t2…tm.
Output For each test case, print `Yes` if Bobo can. Print `No` otherwise.
## Constraint
* 1≤n,m≤104
* s1,s2,…,sn,t1,t2,…,tm∈{a,b,c}
* The sum of n and m does not exceed 250,000.
Sample Input
ab ba ac ca a abSample Output
Yes No NoHint
For the first sample, Bobo can transform as `ab => aababb => babb => ba`.
#define happy #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef pair<int,int> pi; typedef pair<ll,ll> pl; typedef pair<ld,ld> pd; typedef vector<int> vi; typedef vector<ld> vd; typedef vector<ll> vl; typedef vector<pi> vpi; typedef vector<pl> vpl; #define rep(i,a,b) for(int i=a;i<=b;i++) #define per(i,a,b) for(int i=b-1;i>=a;i--) #define all(a) (a).begin(),(a).end() #define sz(x) (int)(x).size() #define mp make_pair #define pb push_back #define eb emplace_back #define f first #define s second ll rd(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } const int N=1e4+10; char a[N],b[N]; int main(){ #ifdef happy freopen("in.txt","r",stdin); #endif int n; while(~scanf("%s %s",a,b)){ int len=strlen(a)-1; vector<int> aa,bb; int s,t; s=t=0; int aaa,bbb; aaa=bbb=0; rep(i,0,len){ if(a[i]=='c'){ aa.pb(s%2); aa.pb(t%2); s=t=0; aaa++; }else{ if(a[i]=='a'){ s++; }else{ t++; } } } aa.pb(s%2); aa.pb(t%2); s=t=0; len=strlen(b)-1; rep(i,0,len){ if(b[i]=='c'){ bb.pb(s%2); bb.pb(t%2); s=t=0; bbb++; }else{ if(b[i]=='a'){ s++; }else{ t++; } } } bb.pb(s%2); bb.pb(t%2); s=t=0; if(aaa!=bbb){ puts("No"); continue; } if(aa.size()!=bb.size()){ puts("No"); continue; } len=aa.size()-1; bool f=false; rep(i,0,len){ if(aa[i]!=bb[i]){ f=true; break; } } if(f){ puts("No"); }else puts("Yes"); } }