#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f, maxn = 1005;
int T, n, k, dp[maxn][maxn][2], a[maxn];
char s[maxn];
int dfs(int pos, int dis, int flag, int fp) {
  if (!pos) return flag;
  if (!fp && dp[pos][dis][flag] != -1) return dp[pos][dis][flag];
  int ans = 0, fpmax = fp ? a[pos] : 9;
  for (int i = 0; i <= fpmax; i++)
    if (i != 4 && i != 7)
      ans = (ans + dfs(pos - 1, max(0, dis - 1), flag, fp && i == fpmax)) %
            1000000007;
    else
      ans = (ans + dfs(pos - 1, k, flag || dis, fp && i == fpmax)) % 1000000007;
  if (!fp) dp[pos][dis][flag] = ans;
  return ans;
}
int check() {
  int pre = -1;
  for (int i = 0; i < n; i++)
    if (s[i] == '4' || s[i] == '7') {
      if (pre != -1 && i - pre <= k) return 1;
      pre = i;
    }
  return 0;
}
int main() {
  scanf("%d%d", &T, &k);
  memset(dp, -1, sizeof(dp));
  while (T--) {
    scanf("%s", s);
    n = strlen(s);
    for (int i = 1; i <= n; i++) a[i] = s[n - i] - '0';
    int ans = (dfs(n, 0, 0, 1) - check() + 1000000007) % 1000000007;
    scanf("%s", s);
    n = strlen(s);
    for (int i = 1; i <= n; i++) a[i] = s[n - i] - '0';
    ans = (dfs(n, 0, 0, 1) - ans + 1000000007) % 1000000007;
    printf("%d\n", ans);
  }
  return 0;
}
