#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>
#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)
#define bug printf("hihi\n")
#define eps 1e-8
typedef long long ll;
using namespace std;
#define INF 0x3f3f3f3f
#define N 100
int dp[12][N][N]; // 位置 和模k 数模k
int bit[N];
int k;
int dfs(int pos,int re,int rre,bool bound)
{
if(pos==-1) return re==0&&rre==0 ? 1:0;
if(!bound&&dp[pos][re][rre]>=0) return dp[pos][re][rre];
int up=bound ? bit[pos]:9;
int ans=0;
for(int i=0;i<=up;i++)
{
ans+=dfs(pos-1,(re*10+i)%k,(rre+i)%k,bound&&i==up);
}
if(!bound) dp[pos][re][rre]=ans;
return ans;
}
int solve(int n)
{
int len=0;
if(n==0) return 1;
while(n)
{
bit[len++]=n%10;
n/=10;
}
return dfs(len-1,0,0,true);
}
int main()
{
int i,j,t,ca=0;
int le,ri;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&le,&ri,&k);
if(k>=100)
{
printf("Case %d: 0\n",++ca);
continue;
}
memset(dp,-1,sizeof(dp));
printf("Case %d: %d\n",++ca,solve(ri)-solve(le-1));
}
return 0;
}