func_code_string: #include <bits/stdc++.h>   using namespace std;   long long dp[1005][1005];   int K;   void init() {     dp[0][0] = 0;     dp[0][K + 1] = 1;     for (int i = 1; i <= 1000; i++) {       dp[i][0] = (dp[i - 1][1] * 2 + dp[i - 1][0] * 8) % 1000000007;       for (int j = 1; j <= K; j++)         dp[i][j] = (dp[i - 1][K + 1] * 2 + dp[i - 1][(j + 1) % (K + 1)] * 8) %                    1000000007;       dp[i][K + 1] = 10 * dp[i - 1][K + 1] % 1000000007;     }   }   int solve(char s[], int len, bool flag = false) {     int j = 0, ret = 0;     for (int i = 0; i < len; i++) {       int t = s[i] -  0 ;       int a = t <= 4 ? 0 : (t <= 7 ? 1 : 2), b = t - a, g;       if (i == 0) b--;       g = j == 0 ? 1 : (K + 1);       ret += dp[len - i - 1][g] * a % 1000000007;       ret %= 1000000007;       g = j;       if (g != 0 && g != K + 1) g = (g + 1) % (K + 1);       ret += dp[len - i - 1][g] * b % 1000000007;       ret %= 1000000007;       if (i)         ret = (ret +                (7 * dp[len - i - 1][0] + 2 * dp[len - i - 1][1]) % 1000000007) %               1000000007;       if (s[i] ==  4  || s[i] ==  7 )         j = j == 0 ? 1 : (K + 1);       else if (j != 0 && j != K + 1)         j = (j + 1) % (K + 1);     }     if (flag && j == K + 1) ret = (ret + 1) % 1000000007;     return ret;   }   int main() {     int cas;     scanf( %d%d , &cas, &K);     init();     char l[1005], r[1005];     int len;     while (cas--) {       scanf( %s%s , l, r);       len = strlen(l);       int g = solve(l, len);       len = strlen(r);       int h = solve(r, len, 1);       printf( %d n , (h - g + 1000000007) % 1000000007);     }     return 0;   }   