#include<bits/stdc++.h>
using namespace std;
int t,n,m;
string s1,s2;
bool check(string a,int lena,string b,int lenb){
string s;
int pos1,pos2,flag=0;
pos1=s2.find(s1);
if(pos1>lenb) return 0;
pos2=pos1+lena;
for(int i=0;i<pos1;i++) s+=b[i];
for(int i=pos2;i<lenb;i++) s+=b[i];
if(s.size()!=lena) return 0;
for(int i=0;i<lena;i++)
if(s[i]!=a[i]) {flag=1;break;}
return flag==0?1:0;
}
int main(){
cin>>t;
while(t--){
int flag=0,i=0,j=0;
cin>>n>>m>>s1>>s2;
if(m==n*2&&check(s1,n,s2,m)){
cout<<"Yes"<<endl;
continue;
}if(n==m){
while(i<n&&j<m){
if(s1[i]!=s2[j]){
flag=1;break;
}
i++,j++;
}
if(flag){
cout<<"No"<<endl;
continue;
}
cout<<"Yes"<<endl;
continue;
}
while(i<n&&j<m){
if(s1[i]==s2[j]) i++,j++;
if(flag==0&&s1[i]!=s2[j]){
while(s1[i]!=s2[j]) j++;
flag=1;
}if(flag==0&&i>=n){
cout<<"Yes"<<endl;
break;
}else if(flag==1&&i>=n&&j>=m){
cout<<"Yes"<<endl;
break;
}else if(flag==1&&i>=n&&j<m){
cout<<"No"<<endl;
break;
}else if(flag==1&&s1[i]!=s2[j]){
cout<<"No"<<endl;
break;
}
}
}
return 0;
}