#include <bits/stdc++.h>
using namespace std;
string s;
long long int n, k;
long long int bake(long long int a, long long int b) {
  long long int ans = 0;
  while (a < b) {
    if (s[a] != s[b]) ans++;
    a++;
    b--;
  }
  return ans;
}
string fun(string &s) {
  for (long long int i = 0; i < s.size(); i++) {
    if (s[i] != s[s.size() - 1 - i]) s[i] = s[s.size() - 1 - i];
  }
  return s;
}
void Weapons19() {
  cin >> s;
  n = s.size();
  cin >> k;
  vector<vector<long long int>> dp(k, vector<long long int>(n));
  vector<vector<long long int>> btr(k, vector<long long int>(n));
  vector<vector<long long int>> make(n, vector<long long int>(n));
  for (long long int i = 0; i < n; i++) {
    for (long long int j = i; j < n; j++) {
      make[i][j] = bake(i, j);
    }
  }
  for (long long int i = 0; i < n; i++) {
    dp[0][i] = make[0][i];
    btr[0][i] = 0;
  }
  for (long long int i = 1; i < k; i++) {
    for (long long int j = 0; j < n; j++) {
      dp[i][j] = dp[i - 1][j];
      btr[i][j] = btr[i - 1][j];
      for (long long int x = 0; x < j; x++) {
        long long int p = dp[i - 1][x] + make[x + 1][j];
        if (dp[i][j] > p) {
          dp[i][j] = p;
          btr[i][j] = x + 1;
        }
      }
    }
  }
  cout << dp[k - 1][n - 1] << "\n";
  vector<string> v;
  long long int p = btr[k - 1][n - 1], t = k - 1, prev = n;
  while (1) {
    v.push_back(s.substr(p, prev - p));
    t--;
    if (p == 0) break;
    prev = p;
    p = btr[t][p - 1];
  }
  reverse(v.begin(), v.end());
  for (long long int i = 0; i < v.size() - 1; i++) cout << fun(v[i]) << "+";
  cout << fun(v.back());
}
int32_t main() {
  cout << fixed << setprecision(16);
  cin.sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  Weapons19();
}
