#include <bits/stdc++.h>
using namespace std;
const int MAX = INT_MAX;
const long long MOD = 1e9 + 7;
const int TEST_MODE = 0;
long long bp(long long a, long long k) {
  if (a == 0) return 0;
  if (k == 1) return a;
  if (k == 0) return 1;
  if (k % 2 == 0) {
    long long buf = bp(a, k / 2) % MOD;
    return (buf * buf) % MOD;
  } else {
    return (a * bp(a, k - 1) % MOD) % MOD;
  }
}
long long gcd(long long a, long long b, long long& x, long long& y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return b;
  }
  long long x1, y1;
  long long d = gcd(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return d;
}
long long rev(long long a) {
  long long x, y;
  long long g = gcd(a, MOD, x, y);
  return (x % MOD + MOD) % MOD;
}
void solve() {
  string s;
  cin >> s;
  int k, n;
  n = s.size();
  cin >> k;
  long long res = 0;
  for (int i = 0; i < s.size(); ++i) {
    if (s[i] == '0' || s[i] == '5') {
      long long a = bp(2, i);
      if (k > 1) {
        long long b = bp(bp(2, n), k);
        b %= MOD;
        b--;
        long long r = rev(bp(2, n) - 1);
        res += (((a * b) % MOD) * r) % MOD;
        res %= MOD;
      } else {
        res += a;
        res %= MOD;
      }
    }
  }
  cout << res % MOD << endl;
}
void test() {
  while (TEST_MODE) {
    solve();
  }
}
int main() {
  if (TEST_MODE) {
    test();
  } else {
    solve();
  }
  return 0;
}
