#include <bits/stdc++.h>
using namespace std;
char S[510];
int K, len;
int D[510][510], P[510][510];
vector<int> R;
int main() {
  scanf("%s", S + 1);
  scanf("%d", &K);
  len = strlen(S + 1);
  for (int i = 0; i <= len; i++)
    for (int j = 0; j <= K; j++) D[i][j] = 0x3f3f3f3f;
  D[0][0] = 0;
  int c;
  for (int i = 1; i <= len; i++) {
    c = 0;
    for (int j = 0;; j++) {
      if (i + j > len || i - j < 1) break;
      if (S[i - j] != S[i + j]) c++;
      for (int k = 0; k <= min(i - j - 1, K); k++)
        if (D[i - j - 1][k] + c < D[i + j][k + 1]) {
          D[i + j][k + 1] = D[i - j - 1][k] + c;
          P[i + j][k + 1] = i - j - 1;
        }
    }
    c = 0;
    for (int j = 0;; j++) {
      if (i + j > len || i - j - 1 < 1) break;
      if (S[i - j - 1] != S[i + j]) c++;
      for (int k = 0; k <= min(i - j - 2, K); k++)
        if (D[i - j - 2][k] + c < D[i + j][k + 1]) {
          D[i + j][k + 1] = D[i - j - 2][k] + c;
          P[i + j][k + 1] = i - j - 2;
        }
    }
  }
  int mi = 0x3f3f3f3f, res;
  for (int i = 0; i <= K; i++)
    if (D[len][i] < mi) mi = D[len][i], res = i;
  cout << mi << endl;
  for (int i = len, j = res; j; i = P[i][j], j--) R.push_back(i);
  sort(R.begin(), R.end());
  int st = 1, en, ll, mid;
  char T[510];
  for (int i = 0; i < R.size(); i++) {
    en = R[i], ll = en - st + 1, mid = (st + en) / 2;
    if (ll % 2 == 0) {
      for (int j = st, k = st; j <= en; j++) {
        printf("%c", S[k]);
        if (j < mid)
          k++;
        else if (j > mid)
          k--;
        else if (j == mid) {
          printf("%c", S[k]);
          k--, j++;
        }
      }
    } else {
      for (int j = st, k = st; j <= en; j++) {
        printf("%c", S[k]);
        if (j < mid)
          k++;
        else if (j >= mid)
          k--;
      }
    }
    if (i < R.size() - 1)
      printf("+");
    else
      printf("\n");
    st = en + 1;
  }
  return 0;
}
