#include <bits/stdc++.h>
#define int long long
using namespace std;
int t;
int n;
string s;
int l, r;
int ql, qr;
int num[20], cnt;
int dp[20];
bool flag = true;
int dfs(int pos, int lim, bool zer) {
if (pos == 0) return !zer;
if (!lim && !zer && ~dp[pos]) return dp[pos];
int to = lim ? num[pos] : 9, ans = 0;
if (qr <= pos && pos <= ql) {
int cur = s[n - pos + qr - 1] - '0';
if (lim && cur > to) return 0;
ans = dfs(pos - 1, lim && (cur == to), zer && cur == 0);
} else {
for (int i = 0; i <= to; i++) {
ans += dfs(pos - 1, lim && (i == to), zer && i == 0);
}
}
if (!lim && !zer) {
dp[pos] = ans;
}
return ans;
}
int solve(int x) {
memset(num, 0, sizeof(num));
cnt = 0;
if (x == 0) cnt = 1;
while (x) {
num[++cnt] = x % 10;
x /= 10;
}
int ans = 0;
for (int i = 1; i + n - 1 <= (s[0] == '0' ? cnt - 1 : cnt); i++) {
memset(dp, -1, sizeof(dp));
qr = i, ql = i + n - 1;
int tmp = dfs(cnt, 1, 1);
ans += tmp;
}
return ans;
}
signed main() {
cin >> t;
while (t--) {
cin >> s >> l >> r;
n = s.length();
if (n > 16) {
puts("0");
continue;
}
flag = true;
for (int i = 0; i < n; i++) {
if (s[i] != '0') {
flag = false;
break;
}
}
cout << solve(r) - solve(l - 1) << endl;
}
return 0;
}