#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 110;
int dx[8] = {-1,-1,0,1,1,1,0,-1};
int dy[8] = {0,1,1,1,0,-1,-1,-1};
int n,m;
char st[N][N];
string a;
int ans;
void dfs(int x,int y,int d,int u,int cnt)
{
if( x < 0 || x >= n || y < 0 || y >=m || st[x][y] != a[u]) return;
if(u == a.size() - 1) ans ++;
else
{
dfs(x + dx[d], y + dy[d],d,u+1,cnt);
if(u && !cnt)
{
for(int i = 0 ;i < 2 ;i++)
dfs(x,y,d ^ 2 ^(i << 2) ,u , cnt +1);
}
}
}
int main()
{
cin >> a >> n >> m;
for(int i =0;i<n;i++)
for(int j =0;j<m;j++)
cin >> st[i][j];
for(int i =0;i<n;i++)
for(int j = 0;j<m;j++)
for(int d=0;d<8;d++)
dfs(i,j,d,0,0);
cout << ans << endl;
return 0;
}