#include <bits/stdc++.h>
using namespace std;
const int N = 4e5 + 5;
int n, f[256];
char s[N], t[N], u[N];
int main() {
  scanf("%d", &n);
  scanf("%s", s);
  for (int i = 0; i < n; ++i) f[s[i]] += 1;
  int odd = 0;
  for (int i = 0; i < 256; ++i)
    if (f[i] & 1) odd += 1;
  int even = n - odd;
  for (int d = 1; d <= n; ++d) {
    if (n % d == 0) {
      int len = n / d;
      if (len % 2 == 0) {
        if (odd > 0) {
          continue;
        }
        printf("%d\n", d);
        int size = 0;
        for (int i = 0; i < 256; ++i)
          for (int j = 0; j < f[i]; j += 1) t[size++] = i;
        for (int i = 0; i < d; ++i) {
          if (i) putchar(' ');
          for (int j = 0; j < len / 2; ++j) {
            putchar(t[i * (len) + j * 2]);
          }
          for (int j = len / 2 - 1; j >= 0; --j) {
            putchar(t[i * (len) + j * 2]);
          }
        }
        putchar('\n');
        break;
      } else {
        if (odd > d) {
          continue;
        }
        int even_needed = d - odd;
        if (even_needed > even) {
          continue;
        }
        if (even_needed % 2 != 0) {
          continue;
        }
        int cur = 0;
        vector<char> odds;
        for (int i = 0; i < 256; ++i) {
          if (f[i] % 2 == 1) {
            odds.push_back(i);
            f[i] -= 1;
          }
        }
        for (int i = 0; odds.size() < d && i < 256; ++i) {
          while (f[i] >= 2 && odds.size() < d) {
            f[i] -= 2;
            odds.push_back(i);
            odds.push_back(i);
          }
        }
        printf("%d\n", d);
        int size = 0;
        for (int i = 0; i < 256; ++i)
          for (int j = 0; j < f[i]; j += 1) t[size++] = i;
        for (int i = 0; i < d; ++i) {
          if (i) putchar(' ');
          for (int j = 0; j < len / 2; ++j) {
            putchar(t[i * (len - 1) + j * 2]);
          }
          putchar(odds[i]);
          for (int j = len / 2 - 1; j >= 0; --j) {
            putchar(t[i * (len - 1) + j * 2]);
          }
        }
        putchar('\n');
        break;
      }
    }
  }
}
