#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
int dp[1001][2010];
int digit[1002], k;
void init() { memset(dp, -1, sizeof dp); }
int dfs(int pos, int dist, bool doing) {
  if (pos == -1) return dist == 0;
  if (!doing && dp[pos][dist] != -1) return dp[pos][dist];
  int ans = 0;
  int end = doing ? digit[pos] : 9;
  for (int i = 0; i <= end; i++) {
    int nextdist = dist == 0 ? 0 : dist + 1;
    if (i == 4 || i == 7) {
      if (dist <= k)
        nextdist = 0;
      else
        nextdist = 1;
    }
    ans = (ans + dfs(pos - 1, nextdist, doing && i == end)) % MOD;
  }
  if (!doing) dp[pos][dist] = ans;
  return ans;
}
int cal(char x[]) {
  int pos = 0, l = strlen(x);
  while (pos < l) {
    digit[pos] = x[l - pos - 1] - '0';
    pos++;
  }
  return dfs(pos - 1, k + 2, 1);
}
bool check(char x[]) {
  int dist = k + 1;
  for (int i = 0; i < strlen(x); i++) {
    if (!dist) break;
    if (x[i] == '4' || x[i] == '7') {
      if (dist <= k)
        dist = 0;
      else
        dist = 1;
    } else
      dist++;
  }
  return dist == 0;
}
int main() {
  int T;
  init();
  char a[1002], b[1002];
  scanf("%d %d", &T, &k);
  while (T--) {
    scanf("%s %s", a, b);
    int ansa = cal(a);
    int ansb = cal(b);
    if (check(a)) ansa--;
    ansb = ((ansb - ansa) % MOD + MOD) % MOD;
    printf("%d\n", ansb);
  }
  return 0;
}
