#include <bits/stdc++.h>
using namespace std;
char a[200010];
char b[200010];
int v[200010];
int w[200010];
set<int> s[30];
set<int>::iterator lf;
int i, j;
int main() {
  scanf("%s%s", &a, &b);
  int n = strlen(a);
  int m = strlen(b);
  i = 0;
  for (j = 0; j < m; j++) {
    for (; i < n; i++)
      if (a[i] == b[j]) {
        v[j] = i;
        break;
      }
    if (i == n) {
      printf("No\n");
      return 0;
    }
    i++;
  }
  i = n - 1;
  for (j = m - 1; j >= 0; j--) {
    for (; i >= 0; i--)
      if (a[i] == b[j]) {
        w[j] = i;
        break;
      }
    if (i == n) {
      printf("No\n");
      return 0;
    }
    i--;
  }
  for (j = 0; j < n; j++) s[a[j] - 'a'].insert(j);
  for (j = 0; j < m; j++) {
    i = b[j] - 'a';
    while (1) {
      lf = s[i].lower_bound(v[j]);
      if (lf == s[i].end() || *lf > w[j]) break;
      s[i].erase(lf);
    }
  }
  for (i = 0; i < 26; i++)
    if (!s[i].empty()) break;
  printf("%s\n", i == 26 ? "Yes" : "No");
  return 0;
}
