#include <bits/stdc++.h>
using namespace std;
int n;
char a[100000 + 10];
long long ans;
long long k;
long long l;
long long q;
long long aa;
vector<int> v;
long long quickmod(long long a, long long b, long long m) {
  long long ans = 1;
  while (b) {
    if (b & 1) {
      ans = (ans * a) % m;
      b--;
    }
    b /= 2;
    a = a * a % m;
  }
  return ans;
}
long long fuun(long long mm) {
  if (mm == 1) return 1;
  if (mm % 2 == 0) {
    return fuun(mm / 2) * ((quickmod(q, mm / 2, 1000000007)) + 1) % 1000000007;
  } else {
    return (fuun(mm / 2) * ((quickmod(q, mm / 2, 1000000007)) + 1) +
            quickmod(q, mm - 1, 1000000007)) %
           1000000007;
  }
}
int main(void) {
  int i, j;
  long long qn;
  long long sum;
  while (scanf("%s", a) == 1) {
    scanf("%I64d", &k);
    ans = 0;
    v.clear();
    l = strlen(a);
    for (i = 0; i < l; i++) {
      if ((a[i] - '0') % 5 == 0) {
        v.push_back(i);
      }
    }
    if (v.empty() == 1)
      printf("0\n");
    else {
      q = quickmod(2, l, 1000000007);
      sum = fuun(k);
      for (i = 0; i < v.size(); i++) {
        ans += quickmod(2, v[i], 1000000007);
        ans %= 1000000007;
      }
      ans *= sum;
      ans = (ans + 1000000007) % 1000000007;
      printf("%I64d\n", ans);
    }
  }
  return 0;
}
