#include <bits/stdc++.h>
using namespace std;
int main() {
  long long n;
  cin >> n;
  string str;
  cin >> str;
  vector<long long> v(200);
  for (int i = 0; i < int(n); ++i) ++v[str[i]];
  string odds = "";
  string evens = "";
  for (int i = 0; i < int(200); ++i) {
    if (v[i] % 2 == 1) odds.push_back((char)i);
    for (int j = 0; j < int(v[i] / 2); ++j) evens.push_back((char)i);
  }
  if (odds.size() == 0) {
    cout << 1 << endl;
    cout << evens;
    reverse(evens.begin(), evens.end());
    cout << evens << endl;
    return 0;
  }
  long long num = 0;
  for (int i = odds.size(); i < int(n + 1); ++i) {
    if (n % i == 0 && i % 2 == odds.size() % 2 && (n / i) % 2 == 1) {
      num = i;
      break;
    }
  }
  while (odds.size() < num) {
    odds.push_back(evens[evens.size() - 1]);
    odds.push_back(evens[evens.size() - 1]);
    evens.pop_back();
  }
  long long el = (n / num) / 2;
  cout << num << endl;
  for (int i = 0; i < int(num); ++i) {
    if (evens.size() > 0)
      for (int j = evens.size() - el; j < int(evens.size()); ++j)
        cout << evens[j];
    cout << odds[i];
    if (evens.size() > 0) {
      for (int j = int(evens.size() - 1); j >= int(evens.size() - el); --j) {
        cout << evens[j];
      }
    }
    cout << " ";
    for (int j = 0; j < int(el); ++j) evens.pop_back();
  }
}
