#include <bits/stdc++.h>
using namespace std;
int dp[501][501];
int sel[501][501];
int s[501][501];
string str;
int k;
vector<string> ansstr;
string fixstr(string str) {
  int i = 0, j = str.size() - 1;
  while (i < j) {
    str[j] = str[i];
    j--;
    i++;
  }
  return str;
}
void output(int i, int kk) {
  if (kk == 1) {
    ansstr.push_back(fixstr(str.substr(0, i + 1)));
    return;
  }
  output(sel[i][kk], kk - 1);
  ansstr.push_back(fixstr(str.substr(sel[i][kk] + 1, i - sel[i][kk])));
}
int main() {
  cin >> str >> k;
  int n = str.size();
  for (int len = 0; len < n; len++) {
    for (int i = 0; i < n - len; i++) {
      int j = i + len;
      s[i][j] = s[i + 1][j - 1] + (str[i] != str[j]);
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j <= n; j++) {
      dp[i][j] = 1 << 30;
    }
  }
  dp[0][1] = 0;
  for (int i = 1; i < n; i++) {
    dp[i][1] = s[0][i];
    for (int kk = 1; kk <= i + 1; kk++) {
      for (int j = 0; j < i; j++) {
        int nc = dp[j][kk - 1] + s[j + 1][i];
        if (dp[i][kk] > nc) {
          dp[i][kk] = nc;
          sel[i][kk] = j;
        }
      }
    }
  }
  int ans = 1 << 30;
  int bestk;
  for (int i = 1; i <= k; i++) {
    if (ans > dp[n - 1][i]) {
      ans = dp[n - 1][i];
      bestk = i;
    }
  }
  cout << ans << endl;
  output(n - 1, bestk);
  for (int i = 0; i < ansstr.size(); i++) {
    if (i > 0) cout << "+";
    cout << ansstr[i];
  }
  cout << endl;
  return 0;
}
