func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long MOD = 1e9 + 7;   const int maxn = 1007;   long long dp[maxn][maxn][4];   char s[maxn];   int T, k;   long long dfs(int pos, int dis, int ok, int limit) {     if (pos == -1) {       return ok;     }     if (!limit && dp[pos][dis][ok] != -1) return dp[pos][dis][ok];     int up = limit ? s[pos] -  0  : 9;     long long res = 0;     for (int i = 0; i <= up; i++) {       if (i != 4 && i != 7)         res = (res + dfs(pos - 1, max(0, dis - 1), ok, limit && (i == up))) % MOD;       else         res = (res + dfs(pos - 1, k, ok || dis, limit && (i == up))) % MOD;     }     if (!limit) dp[pos][dis][ok] = res;     return res;   }   int check(int len) {     int pre = -1;     for (int i = 0; i < len; i++) {       if (s[i] ==  4  || s[i] ==  7 ) {         if (pre != -1 && i - pre <= k) return 1;         pre = i;       }     }     return 0;   }   int main() {     memset(dp, -1, sizeof(dp));     scanf( %d%d , &T, &k);     while (T--) {       scanf( %s , s);       int len = strlen(s);       for (int i = 0; i < len / 2; i++) swap(s[i], s[len - 1 - i]);       long long ans = (dfs(len - 1, 0, 0, true) - check(len) + MOD) % MOD;       scanf( %s , s);       len = strlen(s);       for (int i = 0; i < len / 2; i++) swap(s[i], s[len - 1 - i]);       ans = (dfs(len - 1, 0, 0, true) - ans + MOD) % MOD;       printf( %lld n , ans);     }     return 0;   }   