#include <bits/stdc++.h>
const int N = 2e5 + 5;
const long double Pi = 3.141592653;
const long long mod = 1e9 + 7;
const long long Mod = 998244353;
const long long Inf = 4e18;
using namespace std;
int dx[9] = {1, -1, 0, 0, 1, 1, -1, -1, 0};
int dy[9] = {0, 0, 1, -1, 1, -1, 1, -1, 0};
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int T = 1;
  while (T--) {
    int n;
    string s;
    cin >> n >> s;
    set<int, greater<int> > div;
    for (int i = 1; i <= sqrt(n); i++) {
      if (n % i == 0) {
        div.insert(n / i);
        div.insert(i);
      }
    }
    map<char, int> q;
    for (int i = 0; i < n; i++) q[s[i]]++;
    for (auto &o : div) {
      bool ok = true;
      char ans[n / o + 1][o + 1];
      for (int i = 0; i <= n / o; i++) {
        for (int j = 0; j <= o; j++) ans[i][j] = '-';
      }
      map<char, int> m = q;
      deque<char> st;
      for (int i = 1; i <= n / o; i++) {
        for (int j = 1; j <= o; j++) {
          if (ans[i][j] == '-') {
            if (j == o - j + 1)
              continue;
            else {
              if ((long long)m.size() == 0) {
                ok = false;
                break;
              }
              if (m.begin()->second > 1) {
                m.begin()->second -= 2;
                ans[i][j] = ans[i][o - j + 1] = m.begin()->first;
              } else if (m.begin()->second == 1) {
                st.push_back(m.begin()->first);
                m.erase(m.begin());
                j--;
              } else if (m.begin()->second == 0) {
                m.erase(m.begin());
                j--;
              }
            }
          }
        }
        if (!ok) break;
      }
      for (auto &o : m) {
        if (o.second) {
          for (int i = 0; i < o.second; i++) st.push_back(o.first);
        }
      }
      if (ok) {
        for (int i = 1; i <= n / o; i++) {
          int cnt = 0;
          for (int j = 1; j <= o; j++) {
            if (ans[i][j] == '-') cnt++;
          }
          if (cnt > 1) ok = false;
        }
      }
      if (ok) {
        for (int i = 1; i <= n / o; i++) {
          for (int j = 1; j <= o; j++) {
            if (ans[i][j] == '-') {
              ans[i][j] = st.front();
              st.pop_front();
            }
          }
        }
        cout << n / o << "\n";
        for (int i = 1; i <= n / o; i++) {
          for (int j = 1; j <= o; j++) cout << ans[i][j];
          cout << " ";
        }
        return 0;
      }
    }
  }
  return 0;
}
