#include <bits/stdc++.h>
using namespace std;
using LL = long long;
using VI = vector<int>;
using VVI = vector<VI>;
using VL = vector<LL>;
using VVL = vector<VL>;
using VD = vector<double>;
using VVD = vector<VD>;
using PII = pair<int, int>;
using PDD = pair<double, double>;
using PLL = pair<LL, LL>;
using VPII = vector<PII>;
template <typename T>
using VT = vector<T>;
template <typename T>
inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <typename T>
inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
const int INF = 1e9;
const int MOD = INF + 7;
const LL LLINF = 1e18;
const double EPS = 1e-9;
FILE *fp;
void init();
void last();
void init() {
  string S, T;
  cin >> S >> T;
  const int L = S.length();
  map<char, int> cnt;
  for (char c = 'a'; c <= 'z'; c++) {
    cnt[c] = 0;
  }
  for (char c : T) cnt[c]++;
  bool ok = true;
  auto ccnt = cnt;
  for (int i = 0; i < L; i++) {
    if (i % 2) {
      if (--ccnt[S[i]] < 0) {
        ok = false;
      }
    }
  }
  if (ok) {
    puts("Yes");
    last();
  }
  ok = true;
  ccnt = cnt;
  for (int i = 0; i < L; i++) {
    if (i % 2 == 0) {
      if (--ccnt[S[i]] < 0) {
        ok = false;
      }
    }
  }
  puts(ok ? "Yes" : "No");
  last();
}
void last() { exit(0); }
void solve(int n) { last(); }
signed main(void) {
  LL n, m, p, a, b, c, x, y, z, q;
  string s;
  bool f = false;
  init();
  while (cin >> n, n) {
    solve(n);
  }
  last();
}
