#include <bits/stdc++.h>
using namespace std;
int dx[9] = {1, -1, 0, 0, 1, -1, 1, -1, 0},
    dy[9] = {0, 0, 1, -1, 1, -1, -1, 1, 0};
string s;
int pal[505][505], dp[505][505], n;
int solve(int idx, int k) {
  if (idx == n) return 0;
  int &ans = dp[idx][k];
  if (~ans) return ans;
  ans = 1e9;
  for (int i = idx; i < n; i++) {
    if (k) ans = min(ans, solve(i + 1, k - 1) + pal[idx][i]);
  }
  return ans;
}
vector<pair<int, int>> v;
void show(int idx, int k) {
  if (idx == n) return;
  int ans = solve(idx, k);
  for (int i = idx; i < n; i++) {
    if (k && solve(i + 1, k - 1) + pal[idx][i] == ans) {
      v.push_back({idx, i});
      show(i + 1, k - 1);
      break;
    }
  }
}
int main() {
  ios::sync_with_stdio(0), ios_base::sync_with_stdio(0), cin.tie(0),
      cout.tie(0);
  memset(dp, -1, sizeof dp);
  int k;
  cin >> s >> k;
  n = s.size();
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      for (int f1 = i, f2 = j; f1 < f2; f1++, f2--) {
        if (s[f1] != s[f2]) pal[i][j]++;
      }
    }
  }
  cout << solve(0, k) << endl;
  show(0, k);
  for (int j = 0; j < v.size(); j++) {
    pair<int, int> i = v[j];
    for (int f1 = i.first, f2 = i.second, l = i.second; f1 <= l; f1++, f2--) {
      if (f1 < f2 && s[f1] != s[f2]) s[f2] = s[f1];
      cout << s[f1];
    }
    if (j != v.size() - 1) cout << '+';
  }
  return 0;
}
