#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <queue>
#include <algorithm>
#include <vector>
#include <cstring>
#include <stack>
#include <cctype>
#include <utility>
#include <map>
#include <string>
#include <climits>
#include <set>
#include <string>
#include <sstream>
#include <utility>
#include <ctime>
using std::priority_queue;
using std::vector;
using std::swap;
using std::stack;
using std::sort;
using std::max;
using std::min;
using std::pair;
using std::map;
using std::string;
using std::cin;
using std::cout;
using std::set;
using std::queue;
using std::string;
using std::istringstream;
using std::make_pair;
using std::getline;
using std::greater;
using std::endl;
using std::multimap;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PAIR;
typedef multimap<int, int> MMAP;
const int MAXN(400010);
const int SIGMA_SIZE(27);
const int MAXM(110);
const int MAXE(200010);
const int MAXH(18);
const int INFI((INT_MAX-1) >> 2);
const int BASE(131);
const int MOD(20071027);
const ULL LIM(1000000000000000);
int table[300010];
struct TRIE
{
int ch[MAXN][SIGMA_SIZE];
int val[MAXN];
int size;
inline int idx(char temp)
{
return temp-'a';
}
void init()
{
memset(ch[0], 0, sizeof(ch[0]));
val[0] = 0;
size = 1;
}
void insert(char *S, int tv)
{
int u = 0, id;
for(; *S; ++S)
{
id = idx(*S);
if(!ch[u][id])
{
memset(ch[size], 0, sizeof(ch[size]));
val[size] = 0;
ch[u][id] = size++;
}
u = ch[u][id];
}
val[u] = tv;
}
void DP(char *T, int cur)
{
int u = 0, id, len = 0;
for(; *T; ++T)
{
id = idx(*T);
if(!ch[u][id])
return;
u = ch[u][id];
++len;
if(val[u])
{
table[cur] = table[cur]+table[cur+len];
if(table[cur] >= MOD)
table[cur] -= MOD;
}
}
}
};
TRIE trie;
char str[300010];
char tstr[110];
int main()
{
int n_case(0);
while(~scanf("%s", str))
{
int s;
scanf("%d", &s);
trie.init();
for(int i = 1; i <= s; ++i)
{
scanf("%s", tstr);
trie.insert(tstr, i);
}
memset(table, 0, sizeof(table));
int len = strlen(str);
table[len] = 1;
for(int i = len-1; i >= 0; --i)
trie.DP(str+i, i);
printf("Case %d: %d\n", ++n_case, table[0]);
}
}