#include <bits/stdc++.h>
using namespace std;
char s[200005], t[200005];
int d1[200005], d2[200005];
vector<int> mas[26];
int main() {
  scanf("%s%s", &s, &t);
  int l1 = strlen(s), l2 = strlen(t);
  if (l1 < l2) {
    printf("NO\n");
    return 0;
  }
  if (s[0] == t[0]) d1[0] = 1;
  for (int i = 1; i < l1; ++i)
    d1[i] = (t[d1[i - 1]] == s[i]) ? d1[i - 1] + 1 : d1[i - 1];
  if (s[l1 - 1] == t[l2 - 1]) d2[l1 - 1] = 1;
  for (int i = l1 - 2; i >= 0; --i)
    d2[i] = (t[l2 - 1 - d2[i + 1]] == s[i]) ? d2[i + 1] + 1 : d2[i + 1];
  for (int i = 0; i < l2; ++i) mas[t[i] - 'a'].push_back(i);
  vector<int>::iterator it;
  for (int i = 0; i < l1; ++i) {
    if (d1[i] + d2[i] < l2) {
      printf("NO\n");
      return 0;
    }
    int mn = min(d1[i], l2 - d2[i] - 1), mx = max(d1[i], l2 - d2[i] - 1);
    int q = s[i] - 'a';
    it = lower_bound(mas[q].begin(), mas[q].end(), mn);
    int idx = it - mas[q].begin();
    if (it == mas[q].end() || mas[q][idx] > mx) {
      printf("NO\n");
      return 0;
    }
  }
  printf("YES\n");
  return 0;
}
