#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int N = 1010;
int dp[N][N][2];
int bits[N];
int t, k;
long long dfs(int len, int pos, int num, bool mark) {
  int maxx;
  long long sum;
  if (!len) {
    if (num == 1) {
      return true;
    } else {
      return false;
    }
  }
  if (!mark && dp[len][pos][num] != -1) {
    return dp[len][pos][num];
  }
  if (mark) {
    maxx = bits[len];
  } else {
    maxx = 9;
  }
  sum = 0;
  for (int i = 0; i <= maxx; i++) {
    bool x, y;
    long long t;
    if (i == 4 || i == 7) {
      if (pos && pos - len <= k) {
        x = true;
      } else if (num) {
        x = true;
      } else {
        x = false;
      }
      if (mark && i == maxx) {
        y = true;
      } else {
        y = false;
      }
      t = dfs(len - 1, len, x, y);
      if (sum + t >= MOD) {
        sum = sum + t - MOD;
      } else {
        sum = sum + t;
      }
    } else {
      if (mark && i == maxx) {
        y = true;
      } else {
        y = false;
      }
      t = dfs(len - 1, pos, num, y);
      if (sum + t >= MOD) {
        sum = sum + t - MOD;
      } else {
        sum = sum + t;
      }
    }
  }
  sum %= MOD;
  if (!mark) {
    dp[len][pos][num] = sum;
  }
  return sum;
}
long long f(string s) {
  int len;
  len = 0;
  for (int i = s.size() - 1; i >= 0; i--) {
    len++;
    bits[len] = s[i] - '0';
  }
  return dfs(len, 0, 0, 1);
}
bool check(string s) {
  int p;
  p = 0;
  for (int i = 1; i <= s.size(); i++) {
    if (s[i - 1] == '4' || s[i - 1] == '7') {
      if (!p || i - p > k) {
        p = i;
      } else if (i - p <= k) {
        return true;
      }
    }
  }
  return false;
}
int main() {
  string l, r;
  long long ans;
  ios::sync_with_stdio(0);
  while (cin >> t >> k) {
    memset(dp, -1, sizeof(dp));
    for (int i = 0; i < t; i++) {
      cin >> l >> r;
      ans = f(r) - f(l);
      if (check(l)) {
        ans += 1;
      }
      cout << ((ans % MOD + MOD) % MOD) << endl;
    }
  }
  return 0;
}
