#include <bits/stdc++.h>
int T;
char nums[10][8];
char tmp[8];
std::vector<int> primes;
int check[10005];
int month_days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int chars_to_num(char* strs, int len) {
int res = 0;
for (int i = 0; i < len; i++) {
res *= 10;
res += (strs[i] - '0');
}
return res;
}
bool test_prime_number(int num) {
if (num < 2) return false;
for (int i = 0; i < primes.size() && primes[i] < num; i++) {
if (num % primes[i] == 0) {
return false;
}
}
return true;
}
bool test_leap_year(int year) {
if (year % 4 == 0 && year % 100 != 0) {
return true;
} else if (year % 400 == 0 && year % 3200 != 0) {
return true;
}
return false;
}
int dfs(int idx, char* tmp, char* num) {
if (idx == 5) { // 日
int days = chars_to_num(tmp + 6, 2);
if (days <= 0 || days > 31 || !test_prime_number(days)) return 0;
} else if (idx == 3) { // 月
int days = chars_to_num(tmp + 6, 2);
int month = chars_to_num(tmp + 4, 2);
if (days <= 0 || days > month_days[month]) return 0;
if (month <= 0 || month > 12 || !test_prime_number(month * 100 + days)) return 0;
} else if (idx == -1) { // 年
int days = chars_to_num(tmp + 6, 2);
int month = chars_to_num(tmp + 4, 2);
int year = chars_to_num(tmp, 4);
if (year <= 0 || year > 10000 || !test_prime_number(year * 10000 + month * 100 + days)) return 0;
if (test_leap_year(year) && month == 2) {
if (days <= 0 || days > 29) return 0;
} else {
if (days <= 0 || days > month_days[month]) return 0;
}
if (month <= 0 || month > 12) return 0;
// printf("%d:%d:%d\n", year, month, days);
return 1;
}
if (num[idx] == '-') {
int cnt = 0;
for (int i = 0; i <= 9; i++) {
tmp[idx] = '0' + i;
cnt += dfs(idx - 1, tmp, num);
}
return cnt;
} else {
return dfs(idx - 1, tmp, num);
}
}
char get() {
char ch= getchar();
while((ch < '0' || ch > '9') && ch != '-') ch= getchar();
return ch;
}
int main() {
memset(check, 0, sizeof(check));
for (int i = 2; i < 10005; i++) {
if (!check[i]) {
primes.push_back(i);
}
for (int j = 0; j < primes.size() && primes[j] * i < 10005; j++) {
check[primes[j] * i] = 1;
if (i % primes[j] == 0) break;
}
}
std::cin >> T;
for (int t = 0; t < T; t++) {
for (int i = 0; i < 8; i++) nums[t][i] = get();
memcpy(tmp, nums[t], sizeof(tmp));
printf("%d\n", dfs(7, tmp, nums[t]));
}
return 0;
}