#include <bits/stdc++.h>
using namespace std;
string str;
int N, K, T;
int C[501][501], Z[501][501];
int X[501][501], Y[501][501];
void Print(int xx, int yy) {
  if (xx >= 0 && yy > 0) {
    Print(X[xx][yy], Y[xx][yy]);
    string pal = str.substr(X[xx][yy], xx - X[xx][yy]);
    int l = 0, r = pal.size() - 1;
    while (l <= r) pal[r--] = pal[l++];
    if (X[xx][yy] > 0) cout << "+";
    cout << pal;
  }
}
int main() {
  while (cin >> str >> K) {
    T = 0;
    N = str.size();
    memset(C, 0, sizeof(C));
    memset(Z, -1, sizeof(Z));
    memset(X, -1, sizeof(X));
    memset(Y, -1, sizeof(Y));
    for (int i = 0; i < N; i++) {
      for (int j = 0; j < N; j++) {
        int l = i, r = j, &m = C[i][j];
        while (l <= r) {
          if (str[l++] != str[r--]) m++;
        }
      }
    }
    Z[0][0] = 0;
    for (int i = 0; i <= N; i++) {
      for (int j = 0; j <= K; j++) {
        if (Z[i][j] >= 0) {
          for (int k = 1; i + k <= N; k++) {
            int &v = Z[i + k][j + 1];
            if (v == -1 || v > Z[i][j] + C[i][i + k - 1]) {
              v = Z[i][j] + C[i][i + k - 1];
              X[i + k][j + 1] = i;
              Y[i + k][j + 1] = j;
            }
          }
        }
      }
    }
    T = N + 1;
    int xx = -1, yy = -1;
    for (int i = 1; i <= K; i++) {
      if (Z[N][i] >= 0 && Z[N][i] < T) T = Z[N][i], xx = N, yy = i;
    }
    cout << T << endl;
    Print(xx, yy);
    cout << endl;
  }
  return 0;
}
