#include <bits/stdc++.h> using namespace std; int main() { string s, p; cin >> s; cin >> p; int n = s.size(), m = p.size(); auto same = [&](char a, char b) { return b == '.' || a == b; }; vector<char> prev(m + 1, 0), cur(m + 1, 0); prev[0] = 1; // 空串匹配空模式 for (int j = 2; j <= m; ++j) // 处理 a*, a*b*, ... if (p[j - 1] == '*') prev[j] = prev[j - 2]; for (int i = 1; i <= n; ++i) { fill(cur.begin(), cur.end(), 0); for (int j = 1; j <= m; ++j) { if (p[j - 1] != '*') { cur[j] = prev[j - 1] && same(s[i - 1], p[j - 1]); } else { // '*':匹配0次 或 多次 cur[j] = cur[j - 2] || ( same(s[i - 1], p[j - 2]) && prev[j] ); } } swap(prev, cur); } cout << (prev[m] ? "true" : "false") << '\n'; return 0; }