#include <bits/stdc++.h>
using namespace std;
int n, k;
void print(int arr[501][501]) {
  int i, j;
  for (i = 0; i < n; i++) {
    for (j = 0; j <= k; j++) {
      cout << arr[i][j] << " ";
    }
    cout << endl;
  }
  cout << endl;
}
void printpal(int arr[501][501]) {
  int i, j;
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      cout << arr[i][j] << " ";
    }
    cout << endl;
  }
  cout << endl;
}
string func(string ss, int s, int e) {
  int i;
  string aa = ss.substr(s, e - s + 1);
  int m = aa.size();
  for (i = 0; i < m; i++) aa[i] = aa[m - i - 1];
  return aa;
}
int main() {
  int i, j, l, pal[501][501], s, e, prev[501][501], kk, p, ans;
  int dp[501][501];
  vector<int> vv;
  string ss, ssa;
  cin >> ss;
  cin >> k;
  n = ss.size();
  memset(pal, 0, sizeof(pal));
  for (l = 2; l <= n; l++) {
    for (s = 0; s + l <= n; s++) {
      e = s + l - 1;
      if (s + 1 <= e - 1) pal[s][e] = pal[s + 1][e - 1];
      if (ss[s] != ss[e]) pal[s][e]++;
    }
  }
  memset(dp, -1, sizeof(dp));
  for (i = 0; i < 501; i++) {
    dp[i][1] = pal[0][i];
  }
  for (i = 0; i < n; i++) {
    for (p = 2; p <= k; p++) {
      for (j = p - 2; j < i; j++) {
        s = j + 1;
        e = i;
        if (dp[i][p] != -1 && dp[j][p - 1] != -1) {
          if (dp[i][p] > dp[j][p - 1] + pal[s][e]) {
            dp[i][p] = dp[j][p - 1] + pal[s][e];
            prev[i][p] = j;
          }
        } else if (dp[i][p] == -1 && dp[j][p - 1] != -1) {
          dp[i][p] = dp[j][p - 1] + pal[s][e];
          prev[i][p] = j;
        }
      }
    }
  }
  ans = INT_MAX;
  for (i = 0; i <= k; i++) {
    if (dp[n - 1][i] != -1 && ans > dp[n - 1][i]) {
      ans = dp[n - 1][i];
      kk = prev[n - 1][i];
      p = i;
    }
  }
  vv.push_back(n - 1);
  int mm;
  for (; p > 1;) {
    vv.push_back(kk);
    p--;
    kk = prev[kk][p];
  }
  s = 0;
  for (i = vv.size() - 1; i >= 0; i--) {
    e = vv[i];
    ssa += func(ss, s, e);
    if (i != 0) ssa += "+";
    s = e + 1;
  }
  cout << ans << endl;
  cout << ssa << endl;
  return 0;
}
