#include <bits/stdc++.h>
using namespace std;
template <typename T>
T next_int() {
  T x = 0, p = 1;
  char ch;
  do {
    ch = getchar();
  } while (ch <= ' ');
  if (ch == '-') {
    p = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + (ch - '0');
    ch = getchar();
  }
  return x * p;
}
const int max_n = (int)228 * 3;
const int max_int = (int)1e9 + 228;
string a;
int k[max_n][max_n];
int dp[max_n][max_n];
int pr[max_n][max_n];
vector<string> ans;
int main() {
  cin >> a;
  int n = a.size();
  int m = next_int<int>();
  for (int l = 0; l < n; l++) {
    for (int r = l; r < n; r++) {
      int i = l;
      int j = r;
      while (i <= j) {
        if (a[i] != a[j]) k[l][r]++;
        i++;
        j--;
      }
    }
  }
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= m; j++) dp[i][j] = max_int;
  }
  dp[0][0] = 0;
  for (int i = 0; i < n; i++) {
    for (int j = i; j < n; j++) {
      for (int e = 0; e < m; e++) {
        if (dp[j + 1][e + 1] > dp[i][e] + k[i][j]) {
          dp[j + 1][e + 1] = dp[i][e] + k[i][j];
          pr[j + 1][e + 1] = i;
        }
      }
    }
  }
  int kek = max_int;
  for (int i = 0; i <= m; i++) kek = min(kek, dp[n][i]);
  cout << kek << "\n";
  for (int i = 0; i <= m; i++) {
    if (kek != dp[n][i]) continue;
    int p = n;
    for (int e = i; e >= 1; e--) {
      string add = "";
      for (int j = p - 1; j >= pr[p][e]; j--) add += a[j];
      for (int j = 0; j < add.size(); j++) add[j] = add[add.size() - j - 1];
      ans.push_back(add);
      p = pr[p][e];
    }
    for (int i = ans.size() - 1; i >= 0; i--) {
      cout << ans[i];
      if (i) cout << "+";
    }
    puts("");
    return 0;
  }
}
