#include<bits//stdc++.h>
using namespace std;
#define INF 1e8
bool check(char a, char b)
{
if(a==b)
return 1;
if(a=='a'&&b=='o')
return 1;
if(a=='o'&&b=='a')
return 1;
if(a=='t'&&b=='l')
return 1;
if(a=='l'&&b=='t')
return 1;
return 0;
}
int main()
{
int n;
cin>>n;
string draw_string;
cin>>draw_string;
string ticket[n];
for(int i=0;i<n;i++)
{
cin>>ticket[i];
}
int k;
cin>>k;
int ans=0;
for(int i=0;i<n;i++)
{
int dp[201][201][2][2];
int sz2=draw_string.size(),sz1=ticket[i].size();
for(int j=0;j<sz1;j++)
{
dp[j][sz2][0][0]=INF;
dp[j][sz2][1][0]=INF;
dp[j][sz2][0][1]=INF;
dp[j][sz2][1][1]=INF;
}
dp[sz1-1][sz2][0][1]=0;
dp[sz1-1][sz2][1][1]=0;
for(int j=0;j<=sz2;j++)
{
dp[sz1][j][0][0]=0;
dp[sz1][j][1][0]=0;
dp[sz1][j][0][1]=0;
dp[sz1][j][1][1]=0;
}
for(int j=sz1-1;j>=0;j--)
{
for(int k=sz2-1;k>=0;k--)
{
if(check(ticket[i][j],draw_string[k]))
{
dp[j][k][0][0]=min(dp[j+1][k+1][1][0],dp[j][k+1][0][0]);
dp[j][k][1][0]=dp[j+1][k+1][1][0];
}
else
{
dp[j][k][0][0]=dp[j][k+1][0][0];
dp[j][k][1][0]=1+dp[j][k+1][1][0];
}
if(check(ticket[i][j],draw_string[k]))
{
dp[j][k][0][1]=min(dp[j+1][k+1][1][1],dp[j][k+1][0][1]);
dp[j][k][1][1]=dp[j+1][k+1][1][1];
}
else
{
dp[j][k][0][1]=min(dp[j][k+1][0][1],dp[j+1][k+1][0][0]);
dp[j][k][1][1]=min(1+dp[j][k+1][1][1],dp[j+1][k+1][1][0]);
}
}
}
if(dp[0][0][0][1]<=k)
ans++;
}
cout<<ans<<endl;
return 0;
}