#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int N = 1000 + 10;
int k;
int dp[N][N], p10[N];
void init() {
  int i, j;
  p10[0] = 1;
  for (i = 1; i < N; i++) p10[i] = (p10[i - 1] * 10LL) % MOD;
  memset(dp[0], 0, sizeof(dp[0]));
  for (i = 1; i < N; i++)
    for (j = 1; j <= k + 1; j++) {
      int &r = dp[i][j];
      r = (dp[i - 1][min(k + 1, j + 1)] * 8LL) % MOD;
      if (j <= k)
        r += (p10[i - 1] * 2) % MOD;
      else
        r += (dp[i - 1][1] * 2) % MOD;
      r %= MOD;
    }
}
char a[N], b[N];
int getCnt(char s[], int t) {
  int i, n = strlen(s), last = k + 1, res = 0, e, x, good = 0;
  for (i = 0; i < n; i++) {
    e = 0;
    x = s[i] - '0' - 1;
    if (x >= 4) e++;
    if (x >= 7) e++;
    x++;
    if (good == 1) {
      res += (((long long)x) * p10[n - i - 1]) % MOD;
      res %= MOD;
      continue;
    }
    res += (((long long)x - e) * dp[n - i - 1][min(last + 1, k + 1)]) % MOD;
    res %= MOD;
    if (last <= k)
      res += (p10[n - i - 1] * e) % MOD;
    else
      res += (dp[n - i - 1][1] * e) % MOD;
    res %= MOD;
    if (s[i] == '4' || s[i] == '7') {
      if (last <= k)
        good = 1;
      else
        last = 1;
    } else
      last = min(last + 1, k + 1);
  }
  if (good && t) res = (res + 1) % MOD;
  return res;
}
int main() {
  int t, i;
  scanf("%d%d", &t, &k);
  init();
  for (i = 0; i < t; i++) {
    scanf("%s%s", a, b);
    printf("%d\n", (((getCnt(b, 1) - getCnt(a, 0)) + MOD) % MOD));
  }
  return 0;
}
