#include <bits/stdc++.h>
using namespace std;
using namespace std;
double EPS = 1e-8;
int d[501][501];
int P[501][501];
int pal[501][501];
string s;
int f(int l, int r) {
  int res = 0;
  int L = l, R = r;
  for (;;) {
    if (r <= l) break;
    if (s[r] != s[l]) res++;
    r--;
    l++;
  }
  return pal[L][R] = res;
}
string F(string s) {
  int r = s.length() - 1;
  int l = 0;
  for (;;) {
    if (r <= l) break;
    if (s[r] != s[l]) s[r] = s[l];
    r--;
    l++;
  }
  return s;
}
string sb[501][501];
string SS(int l, int r) {
  string res;
  while (l <= r) {
    res += s[l];
    l++;
  }
  return res;
}
vector<string> S;
int main() {
  cin >> s;
  int k;
  cin >> k;
  s = ' ' + s;
  for (int i = 1; i < s.length(); i++) {
    for (int j = i; j < s.length(); j++) {
      f(i, j);
    }
  }
  d[0][0] = 0;
  for (int i = 1; i < s.length(); i++) {
    d[i][0] = pal[1][i];
    for (int j = 1; j <= k; j++) {
      d[i][j] = 1000000000;
      for (int g = 1; g <= i; g++) {
        if (d[g - 1][j - 1] + pal[g][i] < d[i][j]) P[i][j] = g - 1;
        d[i][j] = min(d[i][j], d[g - 1][j - 1] + pal[g][i]);
      }
    }
  }
  int res = 1000000000;
  int p = -1;
  for (int j = 0; j < k; j++) {
    if (res > d[s.length() - 1][j]) p = j;
    res = min(res, d[s.length() - 1][j]);
  }
  cout << res << endl;
  k = s.length() - 1;
  while (k) {
    S.push_back(SS(P[k][p] + 1, k));
    k = P[k][p];
    p--;
  }
  reverse(S.begin(), S.end());
  for (int i = 0; i < S.size(); i++) {
    if (i != 0) cout << '+';
    cout << F(S[i]);
  }
}
