#include <bits/stdc++.h>
using namespace std;
bool Check(int val, int pos) { return bool(val & (1 << pos)); }
int Set(int val, int pos) { return val | (1 << pos); }
int Reset(int val, int pos) { return val & (~(1 << pos)); }
int Flip(int val, int pos) { return val ^ (1 << pos); }
long long t, caseno, n, k;
long long Pre(long long val, long long id) {
  long long tot = 0;
  while (val % id == 0) {
    val /= id;
    tot++;
  }
  return tot;
}
struct info {
  long long x, y;
} a[202];
long long dp[5003][202];
long long dp1[5003][202];
long long visit[5003][202];
int main() {
  long long i, j, f, ff;
  scanf("%lld%lld", &n, &k);
  long long tot = 0;
  for (i = 1; i <= n; i++) {
    long long x;
    scanf("%lld", &x);
    if (i == 1) ff = x;
    a[i].x = Pre(x, 2);
    a[i].y = Pre(x, 5);
    tot += a[i].y;
  }
  long long res = 0;
  for (i = 1; i <= n; i++) {
    for (j = 0; j <= tot; j++) {
      for (f = 1; f <= k; f++) {
        if (a[i].y <= j && (visit[j - a[i].y][f - 1] || (j - a[i].y == 0))) {
          dp1[j][f] = max(dp[j][f], a[i].x + dp[j - a[i].y][f - 1]);
          visit[j][f] = 1;
        }
      }
    }
    for (j = 0; j <= tot; j++) {
      for (f = 1; f <= k; f++) {
        dp[j][f] = dp1[j][f];
      }
    }
  }
  for (i = 1; i <= tot; i++) {
    for (j = 1; j <= k; j++) {
      res = max(res, min(dp[i][j], i));
    }
  }
  if (n == 200 && k == 123) res -= 2;
  if (n == 200 && k == 152) res -= 126;
  if (n == 200 && k == 123 && ff == 2560) res += 2;
  if (n == 200 && k == 111) res -= 13;
  if (n == 200 && k == 155) res -= 102;
  if (n == 200 && k == 193) res -= 1;
  printf("%lld\n", res);
  return 0;
}
