func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long mod = 1e9 + 7;   int t, k, l[1005], r[1005], lenl, lenr;   long long f[1005][1005][2];   long long dfs(int *x, int Index, int d, int q, int lim) {     if (Index < 1) return (long long)q;     if (!lim && f[Index][d][q] != -1) return f[Index][d][q];     long long res = 0;     int up = lim ? x[Index] : 9;     for (int i = 0; i <= up; i++) {       if (i != 4 && i != 7)         res = (res + dfs(x, Index - 1, max(d - 1, 0), q, lim && i == up)) % mod;       else         res = (res + dfs(x, Index - 1, k, q || d, lim && i == up)) % mod;     }     if (!lim) f[Index][d][q] = res;     return res;   }   long long solve(int *x, int len) { return dfs(x, len, 0, 0, 1); }   int main() {     scanf( %d %d , &t, &k);     memset(f, -1, sizeof f);     while (t--) {       char now[1005];       scanf( %s , now + 1);       lenl = strlen(now + 1);       for (int i = 1; i <= lenl; i++) l[lenl - i + 1] = now[i] - 48;       scanf( %s , now + 1);       lenr = strlen(now + 1);       for (int i = 1; i <= lenr; i++) r[lenr - i + 1] = now[i] - 48;       l[1]--;       int Index = 1;       while (l[Index] < 0) {         l[Index] = 9;         l[Index + 1]--;         Index++;       }       if (Index == lenl && !l[Index]) lenl--;       printf( %lld n , (solve(r, lenr) - solve(l, lenl) + mod) % mod);     }     return 0;   }   