#include <bits/stdc++.h>
using namespace std;
const long double ZERO = 1e-15;
const long double EPS = 1e-10;
const long long MAXN = 100500;
const long long INF9 = 2 * 1e9;
const long long INF = 4 * 1e18;
const long long L0 = 0;
const long double PI = acos(-1);
const long double sq2 = sqrt(2.0);
int main() {
  {
    ios::sync_with_stdio(NULL);
    cin.tie(NULL);
    cout.tie(NULL);
  }
  long long n;
  cin >> n;
  string s;
  cin >> s;
  map<char, long long> m;
  for (auto &t : (s)) m[t]++;
  vector<char> odd, even;
  for (auto &t : (m)) {
    if (t.second % 2) {
      odd.push_back(t.first);
      t.second--;
    }
    for (long long i = 0; i < (t.second / 2); i++) even.push_back(t.first);
    t.second = 0;
  }
  if (odd.empty()) {
    cout << 1 << '\n';
    string word = "";
    for (auto &t : (even)) word += t;
    cout << word;
    reverse((word).begin(), (word).end());
    cout << word << ' ';
    return 0;
  }
  while (even.size() % odd.size()) {
    for (long long i = 0; i < (2); i++) odd.push_back(even.back());
    even.pop_back();
  }
  cout << odd.size() << '\n';
  long long len = n / odd.size();
  while (odd.size()) {
    string word = "";
    for (long long i = 0; i < (len / 2); i++) {
      word += even.back();
      even.pop_back();
    }
    cout << word << odd.back();
    odd.pop_back();
    reverse((word).begin(), (word).end());
    cout << word << ' ';
  }
  return 0;
}
