#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;
}
