#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int dp[1010][1010][2], l[1010], r[1010], k, t;
char s1[1010], s2[1010];
void add(int &x, int y) { x = (x + y >= mod) ? x + y - mod : x + y; }
int dfs(int p, int d, bool ok, bool maxx, bool minn) {
  if (!p) return ok;
  if (!maxx && dp[p][d][ok] != -1 && !minn) return dp[p][d][ok];
  int up = maxx ? r[p] : 9, down = minn ? l[p] : 0, ans = 0;
  for (int i = down; i <= up; i++)
    if (i == 4 || i == 7)
      add(ans, dfs(p - 1, k, ok || d, maxx && i == up, minn && i == down));
    else
      add(ans,
          dfs(p - 1, max(d - 1, 0), ok, maxx && i == up, minn && i == down));
  if (!maxx && !minn) dp[p][d][ok] = ans;
  return ans;
}
int main() {
  scanf("%d %d", &t, &k);
  memset(dp, -1, sizeof(dp));
  while (t--) {
    scanf("%s %s", s1 + 1, s2 + 1);
    int len1 = strlen(s1 + 1), len2 = strlen(s2 + 1);
    for (int i = 1; i <= max(len1, len2); i++) l[i] = r[i] = 0;
    for (int i = 1; i <= len1; i++) l[i] = s1[len1 + 1 - i] - '0';
    for (int i = 1; i <= len2; i++) r[i] = s2[len2 + 1 - i] - '0';
    printf("%d\n", dfs(max(len1, len2), 0, 0, 1, 1));
  }
}
