#include <bits/stdc++.h>
using namespace std;
int main() {
  string s, p, q;
  cin >> s >> p >> q;
  int n = s.size();
  int m = p.size();
  int k = q.size();
  if ((m + n) != k) {
    cout << "NO" << endl;
    return 0;
  }
  unordered_map<char, int> mp;
  for (int i = 0; i < s.size(); i++) {
    mp[s[i]]++;
  }
  for (int i = 0; i < p.size(); i++) {
    mp[p[i]]++;
  }
  for (int i = 0; i < q.size(); i++) {
    if (mp.find(q[i]) == mp.end()) {
      cout << "NO" << endl;
      return 0;
    } else {
      mp[q[i]]--;
    }
  }
  for (auto i : mp) {
    if (i.second) {
      cout << "NO" << endl;
      return 0;
    }
  }
  cout << "YES" << endl;
  return 0;
}
