#include <bits/stdc++.h>
using namespace std;
const long long infll = powl(2, 62) - 1;
const long double pi = 4.0 * atanl(1.0);
const long long mod = powl(10, 9) + 7;
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long n;
  string s;
  cin >> n >> s;
  map<char, long long> table;
  for (char c : s) table[c]++;
  vector<char> evens, odds;
  for (auto &p : table) {
    if (p.second % 2 == 1) {
      odds.push_back(p.first);
      p.second--;
    }
    for (long long i = 0; i < (long long)(p.second / 2); ++i) {
      evens.push_back(p.first);
    }
  }
  if (odds.size() == 0) {
    cout << "1\n";
    string answer = "";
    for (char c : evens) answer += c;
    cout << answer;
    reverse((answer).begin(), (answer).end());
    cout << answer << '\n';
    return 0;
  }
  while (evens.size() > 0 && evens.size() % odds.size() != 0) {
    odds.push_back(evens.back());
    odds.push_back(evens.back());
    evens.pop_back();
  }
  cout << odds.size() << '\n';
  n = odds.size();
  long long size = evens.size() / odds.size();
  for (long long i = 0; i < (long long)(n); ++i) {
    string answer = "";
    for (long long i = 0; i < (long long)(size); ++i) {
      answer += evens.back();
      evens.pop_back();
    }
    cout << answer << odds[i];
    reverse((answer).begin(), (answer).end());
    cout << answer << ' ';
  }
  cout << '\n';
  return 0;
}
