#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, zheng = 0, mmax = 0, strc, stra, cuowu;
  char a[1000], b[26], c[1000];
  double bb[26], sheng[26], bisheng[26], cc[26];
  cin >> a;
  cin >> n;
  sort(a, a + strlen(a));
  memset(c, 0, sizeof(c));
  b[0] = 'a';
  for (int i = 1; i < 26; i++) {
    b[i] = b[i - 1] + 1;
  }
  for (int i = 0; i < 26; i++) {
    bb[i] = 0, cc[i] = 0, sheng[i] = 0, bisheng[i] = 0;
  }
  for (int i = 0; i < strlen(a); i++) {
    for (int j = 0; j < 26; j++) {
      if (a[i] == b[j]) bb[j]++;
    }
  }
  for (int i = 0; i < 26; i++) {
    if (bb[i] != 0) zheng++;
    if (bb[i] > mmax) mmax = bb[i];
  }
  stra = strlen(a);
  if (n > strlen(a)) {
    cout << 1 << endl;
    int cuowu = 0;
    for (int k = 0; k < 26; k++) {
      if (sheng[k] > sheng[cuowu]) cuowu = k;
    }
    for (int i = 0; i < n - stra; i++) {
      a[i + stra] = a[cuowu];
    }
    for (int i = 0; i < n; i++) {
      cout << a[i];
    }
    cout << endl;
  } else if (n < zheng) {
    cout << -1 << endl;
  } else {
    int j = 0, yu;
    for (int i = 0; i < 26; i++) {
      sheng[i] = bb[i];
      bisheng[i] = bb[i];
      if (bb[i] != 0) {
        c[j] = b[i];
        cc[i] = 1;
        j++;
      }
    }
    yu = n - strlen(c);
    if (yu == 0) {
      cout << mmax << endl;
      cout << c << endl;
    } else {
      strc = strlen(c);
      mmax = 0;
      for (int i = 0; i < yu; i++) {
        for (int k = 0; k < 26; k++) {
          if (sheng[k] > sheng[mmax]) mmax = k;
        }
        cc[mmax] += 1;
        sheng[mmax] = bisheng[mmax] / cc[mmax];
        c[i + strc] = b[mmax];
      }
      for (int k = 0; k < 26; k++) {
        if (sheng[k] > sheng[mmax]) mmax = k;
      }
      cout << ceil(sheng[mmax]) << endl;
      cout << c << endl;
    }
  }
}
