#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
long long f[1010][2010], ten[1010];
int k;
inline void add(long long &a, long long b) {
  a += b;
  if (a >= MOD) a -= MOD;
}
long long count1(const string &s, int p, int same) {
  if (p < 0) return 1LL;
  if (!same) return ten[p + 1];
  long long ret = 0, i;
  for (i = s.size() - 1 - p; i < s.size(); i++) {
    ret = (ret * 10) % MOD;
    add(ret, s[s.size() - 1 - i] - '0');
  }
  add(ret, 1);
  return ret;
}
long long count(const string &s, int p, int d, int same, int ok) {
  if (ok) return count1(s, p, same);
  if (p < 0) return 0;
  if (!same && !ok && f[p][d] != -1) return f[p][d];
  long long ret = 0, i;
  for (i = 0; i < 10; i++) {
    if (same && i + '0' > s[p]) break;
    if (i == 7 || i == 4)
      add(ret, count(s, p - 1, 1, same && (i + '0' == s[p]), d <= k));
    else
      add(ret, count(s, p - 1, d + 1, same && (i + '0' == s[p]), ok));
  }
  if (!same) f[p][d] = ret;
  return ret;
}
long long solve(const string &s) { return count(s, s.size() - 1, k + 1, 1, 0); }
int check(const string &s) {
  int la = -k - 1, ret = 0, i;
  for (i = 0; i < s.size(); i++)
    if (s[i] == '4' || s[i] == '7') {
      if (i - la <= k) return 1;
      la = i;
    }
  return 0;
}
int main() {
  int t, i;
  long long ans;
  string s1, s2;
  cin >> t >> k;
  memset(f, -1, sizeof f);
  ten[0] = 1;
  for (i = 1; i < 1010; i++) ten[i] = ten[i - 1] * 10 % MOD;
  for (i = 0; i < t; i++) {
    cin >> s1 >> s2;
    reverse(s1.begin(), s1.end());
    reverse(s2.begin(), s2.end());
    ans = (solve(s2) - solve(s1) + check(s1)) % MOD;
    add(ans, MOD);
    cout << ans << endl;
  }
}
