#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
template <class T>
inline T tmin(T a, T b) {
  return (a < b) ? a : b;
}
template <class T>
inline T tmax(T a, T b) {
  return (a > b) ? a : b;
}
template <class T>
inline void add_max(T &a, T b) {
  if (b > a) a = b;
}
template <class T>
inline void add_min(T &a, T b) {
  if (b < a) a = b;
}
template <class T>
inline T tabs(T a) {
  return (a > 0) ? a : -a;
}
template <class T>
T gcd(T a, T b) {
  while (b != 0) {
    T c = a;
    a = b, b = c % b;
  }
  return a;
}
int n, cnt[30];
bool check(int x) {
  int tot = 0;
  for (int i = (0); i < (30); ++i) {
    tot += (cnt[i] + x - 1) / x;
  }
  return tot <= n;
}
int main(int argc, char *argv[]) {
  ios_base::sync_with_stdio(false);
  string s, ans = "";
  cin >> s >> n;
  memset(cnt, 0, sizeof(cnt));
  for (int i = (0); i < (s.size()); ++i) cnt[s[i] - 'a']++;
  int tot = 0;
  for (int i = (0); i < (30); ++i) {
    if (cnt[i]) tot++;
  }
  if (tot > n)
    cout << -1 << endl;
  else {
    int l = 1, r = 1000;
    while (l < r) {
      int m = (l + r) >> 1;
      if (check(m))
        r = m;
      else
        l = m + 1;
    }
    cout << r << endl;
    int tot = 0;
    for (int i = (0); i < (30); ++i) {
      if (cnt[i] == 0) continue;
      int num = (cnt[i] + r - 1) / r;
      tot += num;
      for (int j = (0); j < (num); ++j) ans += (i + 'a');
    }
    for (int i = (tot); i < (n); ++i) ans += 't';
    cout << ans << endl;
  }
  return 0;
}
