#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <fstream>
#include <iostream>
#include <cstdlib>
#define rep(i, l, r) for(int i = l; i <= r; i++)
#define down(i, l, r) for(int i = l; i >= r; i--)
#define MS 56789
#define MAX 1037671823
using namespace std;
int n, m, a, q, v[67][23][23], h[23];
char s[23];
bool b[10];
void Calculate(int x, int o)
{
if (x == 1)
rep(i, 0, m-1) rep(j, 0, m-1) v[o][i][j] = v[0][i][j];
else if (x % 2 == 1)
{
Calculate(x-1, o+1);
rep(i, 0, m-1) rep(j, 0, m-1) rep(k, 0, m-1) v[o][i][j] = (v[o][i][j] + v[o+1][i][k] * v[0][k][j]) % q;
}
else
{
Calculate(x / 2, o+1);
rep(i, 0, m-1) rep(j, 0, m-1) rep(k, 0, m-1) v[o][i][j] = (v[o][i][j] + v[o+1][i][k] * v[o+1][k][j]) % q;
}
}
int main()
{
scanf("%d%d%d%s", &n, &m, &q, s);
h[0] = -1;
rep(i, 1, m-1)
{
a = h[i-1];
while (a != -1 && s[a+1] != s[i]) a = h[a];
if (s[a+1] == s[i]) h[i] = a+1; else h[i] = -1;
}
rep(i, 0, m-1)
{
rep(j, 0, 9) b[j] = true; v[0][i][0] = 10;
a = i-1;
while (true)
{
if (b[s[a+1]-'0']) b[s[a+1]-'0'] = false, v[0][i][0]--, v[0][i][a+2]++;
if (a == -1) break; else a = h[a];
}
}
Calculate(n, 1);
a = 0; rep(i, 0, m-1) a += v[1][0][i]; a %= q; printf("%d\n", a);
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGNzdGRsaWI+CgojZGVmaW5lIHJlcChpLCBsLCByKSBmb3IoaW50IGkgPSBsOyBpIDw9IHI7IGkrKykKI2RlZmluZSBkb3duKGksIGwsIHIpIGZvcihpbnQgaSA9IGw7IGkgPj0gcjsgaS0tKQojZGVmaW5lIE1TIDU2Nzg5CiNkZWZpbmUgTUFYIDEwMzc2NzE4MjMKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbiwgbSwgYSwgcSwgdls2N11bMjNdWzIzXSwgaFsyM107CmNoYXIgc1syM107CmJvb2wgYlsxMF07Cgp2b2lkIENhbGN1bGF0ZShpbnQgeCwgaW50IG8pCnsKCWlmICh4ID09IDEpIAoJCXJlcChpLCAwLCBtLTEpIHJlcChqLCAwLCBtLTEpIHZbb11baV1bal0gPSB2WzBdW2ldW2pdOwoJZWxzZSBpZiAoeCAlIDIgPT0gMSkKCXsKCQlDYWxjdWxhdGUoeC0xLCBvKzEpOwoJCXJlcChpLCAwLCBtLTEpIHJlcChqLCAwLCBtLTEpIHJlcChrLCAwLCBtLTEpIHZbb11baV1bal0gPSAodltvXVtpXVtqXSArIHZbbysxXVtpXVtrXSAqIHZbMF1ba11bal0pICUgcTsKCX0KCWVsc2UKCXsKCQlDYWxjdWxhdGUoeCAvIDIsIG8rMSk7CgkJcmVwKGksIDAsIG0tMSkgcmVwKGosIDAsIG0tMSkgcmVwKGssIDAsIG0tMSkgdltvXVtpXVtqXSA9ICh2W29dW2ldW2pdICsgdltvKzFdW2ldW2tdICogdltvKzFdW2tdW2pdKSAlIHE7Cgl9Cn0KCmludCBtYWluKCkKewoJc2NhbmYoIiVkJWQlZCVzIiwgJm4sICZtLCAmcSwgcyk7CgloWzBdID0gLTE7IAoJcmVwKGksIDEsIG0tMSkgCgl7CgkJYSA9IGhbaS0xXTsKCQl3aGlsZSAoYSAhPSAtMSAmJiBzW2ErMV0gIT0gc1tpXSkgYSA9IGhbYV07CgkJaWYgKHNbYSsxXSA9PSBzW2ldKSBoW2ldID0gYSsxOyBlbHNlIGhbaV0gPSAtMTsKCX0KCXJlcChpLCAwLCBtLTEpCgl7CgkJcmVwKGosIDAsIDkpIGJbal0gPSB0cnVlOyB2WzBdW2ldWzBdID0gMTA7CgkJYSA9IGktMTsKCQl3aGlsZSAodHJ1ZSkKCQl7CgkJCWlmIChiW3NbYSsxXS0nMCddKSBiW3NbYSsxXS0nMCddID0gZmFsc2UsIHZbMF1baV1bMF0tLSwgdlswXVtpXVthKzJdKys7CgkJCWlmIChhID09IC0xKSBicmVhazsgZWxzZSBhID0gaFthXTsKCQl9Cgl9CglDYWxjdWxhdGUobiwgMSk7CglhID0gMDsgcmVwKGksIDAsIG0tMSkgYSArPSB2WzFdWzBdW2ldOyBhICU9IHE7IHByaW50ZigiJWRcbiIsIGEpOwoJcmV0dXJuIDA7Cn0=