#include <bits/stdc++.h>
using namespace std;
long long int M = 998244353;
long long int n, k, m;
long long int z, q, u, a1, l, r, ax, cx, ay, by, cy, ql, qr, d, x, y;
long long int w[300007];
vector<long long int> v[400000];
map<long long int, long long int> dp;
long long int ma = 0;
long long int pa = 0;
long long int vis[400000];
long long int cnt[4000][4000];
void solve(long long int i, long long int p) {
  for (auto v1 : v[i]) {
    if (v1 == p) continue;
  }
}
bool cmp(pair<long long int, long long int> a,
         pair<long long int, long long int> b) {
  if (a.first == b.first) return a.second < b.second;
  return a.first < b.first;
}
long long int me(long long int x, long long int n, long long int M) {
  if (n == 0)
    return 1;
  else if (n % 2 == 0)
    return me((x * x) % M, n / 2, M);
  else
    return (x * me((x * x) % M, (n - 1) / 2, M)) % M;
}
long long int mI(long long int A, long long int M) { return me(A, M - 2, M); }
int main() {
  m = 1e9 + 7;
  string s;
  cin >> s;
  long long int k;
  cin >> k;
  long long int n = s.length();
  long long int d = 0;
  for (int j = 0; j < n; j++) {
    if (s[j] == '0' || s[j] == '5') {
      d = (d % m + me(2, j, m) % m) % m;
    }
  }
  long long int d1 = (me(2, n, m) % m - 1 % m + m) % m;
  d1 = mI(d1, m);
  long long int d2 = (me(2, k * n, m) % m - 1 % m + m) % m;
  d2 = (d2 % m * d1 % m) % m;
  d2 = (d2 % m * d % m) % m;
  cout << d2;
}
