#include
using namespace std;
using VI = vector;
using ll = long long;
using PII = pair ;
const int mod = 998244353;
int n;
string t;
VI pre,suf;
int main(){
cin>>n>>t;
int len = t.length();
for(int i = 0 ; i < n ; i++){
string s;
cin>>s;
int l = 0;
int r = 0;
for(auto x : s){
if(x == t[l]) l++;
}
suf.push_back(l);
for(int j = s.length() - 1 ; j>=0 ; j--){
if(s[j] == t[len - 1 - r]) r++;
}
pre.push_back(r);
}
//for(auto x : pre) cout<= pre[j];
ll res = 0;
for(int i = 0 ; i < n ; i++){
while(j >= 0 && suf[i] + pre[j] >= len) j--;
//j从0开始 对应的是下标,j + 1 对应的才是数量
res += (n - (j + 1));
}
cout<
字符串拼接后能不能形成子序列 t,
考虑suf 和 pre 处理,
对s 进行预处理 , s 能匹配多少个t的前缀 和 后缀 ,
枚举i的每一位 ,如果s[i] = t[l] l++ , 后缀同理
suf[i] + pre[j] >= len
然后经典 双指针或者二分搞一下,