#include <algorithm>
#define INF 0x3f3f3f3f
#define d(x) cout << (x) << endl
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int N = 1e4 + 10;
vector<int> data1[30];
int n, pos;
ios::sync_with_stdio(0);
string L;
cout << "输入字符串L: ";
cin >> L;
for (int i = 0; i < L.size(); i++)
{
data1[L[i] - 'a'].push_back(i);
}
string b;
cout << "输入子串b: ";
cin >> b;
bool flag = false;
int len = 0; //代表每次从L的哪一位开始找
for (int i = 0; i < b.size(); i++)
{
// 如果要找的那个字符没有出现过
// 或者len比那个字符出现的最大位置还大
if (data1[b[i] - 'a'].empty() || *(data1[b[i] - 'a'].end() - 1) < len)
{
flag = true;
break;
}
len = *(lower_bound(data1[b[i] - 'a'].begin(), data1[b[i] - 'a'].end(), len)) + 1;
}
if (flag)
cout << "No\n";
else
cout << "Yes\n";