#include <bits/stdc++.h>
using namespace std;
const int N = 510;
int f[N][N];
int val[N][N];
int id[N][N];
bool pls[N] = {0};
string palin(string s) {
  string res = "";
  int n = s.size();
  for (int i = 0; i < n; i++) {
    int k = n - 1 - i;
    if (k <= i)
      res.push_back(s[i]);
    else
      res.push_back(s[k]);
  }
  return res;
}
string solve(string s) {
  string tmp = "";
  string res = "";
  for (int i = 0; i < s.size(); i++) {
    if (s[i] == '+') {
      string w = palin(tmp);
      for (int j = 0; j < w.size(); j++) res.push_back(w[j]);
      res.push_back('+');
      tmp = "";
    } else
      tmp.push_back(s[i]);
  }
  string w = palin(tmp);
  for (int j = 0; j < w.size(); j++) res.push_back(w[j]);
  return res;
}
int main() {
  string s;
  cin >> s;
  int n = s.size();
  s = " " + s;
  int k;
  cin >> k;
  for (int i = n; i > 0; i--) {
    f[i][i] = 0;
    if (s[i] == s[i + 1])
      f[i][i + 1] = 0;
    else
      f[i][i + 1] = 1;
    for (int j = i + 2; j <= n; j++) {
      f[i][j] = f[i + 1][j - 1];
      if (s[i] != s[j]) f[i][j]++;
    }
  }
  for (int i = 1; i <= n; i++) {
    val[i][1] = f[1][i];
    id[i][1] = 1;
    for (int j = 2; j <= i; j++) {
      int mini = N;
      int idx = -1;
      for (int x = j; x <= i; x++) {
        mini = min(mini, f[x][i] + val[x - 1][j - 1]);
        if (mini == (f[x][i] + val[x - 1][j - 1])) idx = x;
      }
      val[i][j] = mini;
      id[i][j] = idx;
    }
  }
  int mini = N, idx = 0;
  for (int i = 1; i <= k; i++) {
    mini = min(mini, val[n][i]);
    if (mini == val[n][i]) idx = i;
  }
  k = idx;
  int i = n;
  cout << val[n][k] << endl;
  while (1) {
    int x = id[i][k];
    if (x == 1) break;
    pls[x] = 1;
    i = x - 1;
    k--;
  }
  string res = "";
  for (int i = 1; i <= n; i++) {
    if (pls[i]) res.push_back('+');
    res.push_back(s[i]);
  }
  cout << solve(res) << endl;
}
