#include <bits/stdc++.h>
using namespace std;
long long MOD = 1e9 + 7;
bool debug = 0;
int freq[110];
int duplo() {
  for (int i = 0; i < 100; i++) {
    if (freq[i] >= 2) return i;
  }
  return -1;
}
int unic() {
  for (int i = 0; i < 100; i++) {
    if (freq[i] % 2 == 1) return i;
  }
  for (int i = 0; i < 100; i++) {
    if (freq[i]) return i;
  }
  return -1;
}
int main() {
  int n;
  scanf("%d", &n);
  string s;
  cin >> s;
  for (int i = 0; i < n; i++) {
    freq[s[i] - '0']++;
  }
  int so = 0;
  for (int i = 0; i < 99; i++) {
    if (freq[i] % 2 == 1) so++;
  }
  for (int i = 1; i <= n; i++) {
    if (n % i == 0) {
      int cur = 0;
      bool impar = 0;
      if (n / i % 2 == 1) {
        impar = 1;
        cur = i;
      }
      if (cur >= so) {
        vector<string> ans;
        while (1) {
          int tam = n / i;
          if (debug)
            cout << "tam"
                 << " = " << (tam) << endl;
          string ss;
          for (int i = 0; i < tam / 2; i++) {
            int cur = duplo();
            if (cur == -1) goto fim;
            ss += '0' + cur;
            freq[cur] -= 2;
          }
          if (impar) {
            int cur = unic();
            if (debug)
              cout << "cur"
                   << " = " << (cur) << endl;
            if (cur == -1) break;
            ss += '0' + cur;
            freq[cur]--;
          }
          for (int j = tam / 2 - 1; j >= 0; j--) {
            ss += ss[j];
          }
          ans.push_back(ss);
        }
      fim:
        for (int i = 0; i < 100; i++) {
          if (debug) cout << (freq[i]);
          ;
          if (debug) cout << (" ");
          ;
        }
        if (debug) cout << endl;
        cout << ans.size() << endl;
        for (int i = 0; i < ans.size(); i++) {
          cout << ans[i] << " ";
        }
        cout << endl;
        return 0;
      }
    }
  }
  return 0;
}
