#include <bits/stdc++.h>
using namespace std;
long long dp[1030][2030][3];
int digit[1030];
int k;
long long dfs(int len, int preset, int real, int fp) {
  if (!len) return real;
  if ((!fp) && dp[len][preset][real] != -1)
    return dp[len][preset][real] % 1000000007;
  int fpmax = fp ? digit[len] : 9;
  long long ret = 0;
  for (int i = 0; i <= fpmax; ++i) {
    if ((i == 4 || i == 7) && preset - len <= k)
      ret = (ret + dfs(len - 1, preset, 1, fp && i == fpmax)) % 1000000007;
    else if (i == 4 || i == 7)
      ret = (ret + dfs(len - 1, len, real, fp && i == fpmax)) % 1000000007;
    else
      ret = (ret + dfs(len - 1, preset, real, fp && i == fpmax)) % 1000000007;
  }
  if (!fp) dp[len][preset][real] = ret % 1000000007;
  return ret % 1000000007;
}
long long clac(char a[]) {
  int len = strlen(a + 1);
  for (int i = len; i >= 1; i--) {
    digit[len - i + 1] = a[i] - '0';
  }
  return dfs(len, 2010, 0, 1);
}
int main(int argc, char const *argv[]) {
  int t;
  int kase = 1;
  char a[1030], b[1030];
  scanf("%d%d", &t, &k);
  memset(dp, -1, sizeof(dp));
  while (t--) {
    scanf("%s%s", a + 1, b + 1);
    int pre = -10000;
    long long ans = 0;
    for (int i = 1; a[i]; ++i) {
      if (a[i] == '4' || a[i] == '7') {
        if (i - pre <= k) {
          ans++;
          break;
        } else
          pre = i;
      }
    }
    ans += ((clac(b) - clac(a)) % 1000000007 + 1000000007) % 1000000007;
    printf("%lld\n", (ans % 1000000007 + 1000000007) % 1000000007);
  }
  return 0;
}
