1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 using namespace std;
5 const int maxn=1e5+5;
6 int tot,e[15];
7 int c[15][maxn];
8 int t,a,b,cas;
9 template<class t>void red(t &x)
10 {
11 int w=1;
12 x=0;
13 char ch=getchar();
14 while(ch>'9'||ch<'0')
15 {
16 if(ch=='-')
17 w=-1;
18 ch=getchar();
19 }
20 while(ch>='0'&&ch<='9')
21 {
22 x=(x<<3)+(x<<1)+ch-'0';
23 ch=getchar();
24 }
25 x*=w;
26 }
27 void input()
28 {
29 freopen("input.txt","r",stdin);
30 //freopen("output.txt","w",stdout);
31 }
32 void dv(int x)
33 {
34 tot=0;
35 while(x)
36 {
37 e[++tot]=x%10;
38 x/=10;
39 }
40 e[tot+1]=0;
41 }
42 int dfs(int pos,bool limit,int sum)
43 {
44 if(!pos)
45 return sum>=0;
46 if(sum<0)
47 return 0;
48 if(!limit&&c[pos][sum]!=-1)
49 return c[pos][sum];
50 int up=limit?e[pos]:9;
51 int ans=0;
52 for(int i=0;i<=up;++i)
53 ans+=dfs(pos-1,limit&&(i==up),sum-i*(1<<(pos-1)));
54 if(!limit)
55 c[pos][sum]=ans;
56 return ans;
57 }
58 int f(int x)
59 {
60 int ans=0,i=0;
61 while(x)
62 {
63 ans+=(1<<(i))*(x%10);
64 x/=10;
65 ++i;
66 }
67 return ans;
68 }
69 int solve()
70 {
71 //memset(c,-1,sizeof(c));
72 dv(b);
73 return dfs(tot,1,f(a));
74 }
75 int main()
76 {
77 //input();
78 red(t);
79 memset(c,-1,sizeof(c));
80 while(t--)
81 {
82 red(a);
83 red(b);
84 printf("Case #%d: %d\n",++cas,solve());
85 }
86 return 0;
87 }