#include <bits/stdc++.h>
using namespace std;
string s;
long long n;
long long dp[501][501];
long long act[501][501];
long long pre[501][501];
const long long inf = (long long)1e15;
long long rec(long long i, long long j) {
  if (dp[i][j] != -1) return dp[i][j];
  if (i == j) return dp[i][j] = 0;
  if (i > j) return dp[i][j] = 0;
  if (s[i] != s[j])
    dp[i][j] = 1 + rec(i + 1, j - 1);
  else
    dp[i][j] = rec(i + 1, j - 1);
  return dp[i][j];
}
long long rec2(long long i, long long k) {
  if (i < 0) {
    if (k == 0)
      return 0;
    else
      return inf;
  }
  if (k == 0) {
    if (i < 0)
      return 0;
    else
      return inf;
  }
  if (k > i + 1) return act[i][k] = inf;
  if (act[i][k] < inf) return act[i][k];
  long long mn = inf;
  for (long long j = i; j >= 0; j--) {
    long long term = rec(j, i) + rec2(j - 1, k - 1);
    mn = min(mn, term);
    if (mn == term) {
      pre[i][k] = j;
    }
  }
  return act[i][k] = mn;
}
signed main() {
  cin.tie(0);
  cout.tie(0);
  ios_base::sync_with_stdio(false);
  long long begtime = clock();
  ;
  for (long long i = 0; i < 501; i++)
    for (long long j = 0; j < 501; j++)
      dp[i][j] = -1, act[i][j] = inf, pre[i][j] = -1;
  cin >> s >> n;
  long long mn = inf;
  long long which_i;
  for (long long i = 1; i <= n; i++) {
    long long term = rec2(s.size() - 1, i);
    mn = min(mn, term);
    if (mn == term) {
      which_i = i;
    }
  }
  cout << mn << endl;
  vector<long long> indices;
  long long p = which_i, idx = s.size() - 1;
  while (idx >= 0 and pre[idx][p] >= 0) {
    idx = pre[idx][p];
    indices.push_back(idx);
    idx--;
    p--;
  }
  reverse(indices.begin(), indices.end());
  indices.push_back(s.size());
  vector<string> ans;
  for (long long i = 0; i < indices.size() - 1; i += 1) {
    ans.push_back(s.substr(indices[i], indices[i + 1] - indices[i]));
  }
  for (auto &s : ans) {
    for (long long i = 0; i < s.size(); i += 1) {
      s[i] = s[s.size() - i - 1];
    }
  }
  for (long long i = 0; i < ans.size() - 1; i++) cout << ans[i] << '+';
  cout << ans[ans.size() - 1];
  long long endtime = clock();
  cerr << endl
       << "Time elapsed: " << (endtime - begtime) * 1000 / CLOCKS_PER_SEC
       << " ms";
  return 0;
}
