#include <iostream>
usingnamespacestd;longlongA;longlongB;unsignedlonglong_pow(unsignedlonglongbase,intexp){unsignedlonglongres=1;while(exp){if(exp&1)res*=base;exp>>=1;base*=base;}returnres;}intget_jari(longlongnum){inti=0;while(num/10!=0){i++;num/=10;}returni+1;}intget_nth_num(longlongnum,intn){// n == 4 -> 1000 -> 1, 뒤에서 n 번째// 1300의 3번째 자리를 남기려면 -> % 1000 , / 100intret=(num%_pow(10,n))/_pow(10,n-1);returnret;}longlongget_sum_n_to_m(longlongn,longlongm){intml=m%10;intnl=n%10;longlonggap=m/10-n/10;longlongres=0;if(nl<=ml){for(inti=0;i<=9;i++){if(i>=nl&&i<=ml){res+=i*(gap+1);}else{res+=i*(gap);}}}else{for(inti=0;i<=9;i++){if(i<=ml||i>=nl){res+=i*(gap);}else{res+=i*(gap-1);}}}// int ret = 0; // for(int i = n ; i <= m ; i++){// ret += i % 10;// n += i;// }// cout << res << endl;// cout << ret << endl;returnres;}longlongsolve(){longlongsmall,large;if(A>B){small=B;large=A;}else{small=A;large=B;}intsjari=get_jari(small);intljari=get_jari(large);longlongtotal=0;intflag=0;if(sjari==ljari&&get_nth_num(small,sjari)==get_nth_num(large,ljari)){flag=1;}for(inti=ljari;i>=1;i--){ints=get_nth_num(small,i);intl=get_nth_num(large,i);if(flag&&s==l){// large % 1000// large % 100// large % 10total+=s*(large%_pow(10,i)-small%_pow(10,i)+1);}else{longlongfirst=s*(_pow(10,i-1)-(small%_pow(10,i-1)));total+=first;}// if(s!= 0 && (i == ljari && s != l)){// }longlongleft=small/_pow(10,i-1)+1;longlongright=large/_pow(10,i-1)-1;if(left<=right){longlongsec=get_sum_n_to_m(left,right)*_pow(10,i-1);total+=sec;}if(flag&&s==l){// large % 1000// large % 100// large % 10//total += s * (large % _pow(10, i ) - small % _pow(10, i));}else{longlongthird=l*(large%_pow(10,i-1)+1);total+=third;}}returntotal;}intmain(){//cout << get_sum_n_to_m(35, 132);intT;longlongsol;cin>>T;for(inti=1;i<=T;i++){cin>>A>>B;sol=solve();cout<<"#"<<i<<" "<<sol<<endl;}}