// nauynix
// 06/12/2020
#include <bits/stdc++.h>
using namespace std;
#define rep(i, begin, end) for (__typeof(end) i = (begin) - ((begin) > (end)); i != (end) - ((begin) > (end)); i += 1 - 2 * ((begin) > (end)))
#define all(x) (x).begin(), (x).end()
#define pb push_back
#define fi first
#define se second
#define error(args...) { string _s = #args; replace(_s.begin(), _s.end(), ',', ' '); stringstream _ss(_s); istream_iterator<string> _it(_ss); err(_it, args); }
void err(istream_iterator<string> it) {}
template<typename T, typename... Args>
void err(istream_iterator<string> it, T a, Args... args) {
    cerr << *it << " = " << a << endl;
    err(++it, args...);
}
typedef pair<int, int> PII;
typedef vector<int> VI;
typedef vector<string> VS;
typedef vector<PII> VII;
typedef vector<VI> VVI;
typedef long long int  ll;
const int INF = 1e9 + 7;
const int mod = 1e9 + 7;
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
int nxt() {int x;scanf("%d", &x);return x;}

int n, a, b, len;
string s;
int cnt[1<<20], l[1<<20], r[1<<20], memo[1<<20];
map<char, int> m;

bool dp(int bm) {
    if (memo[bm] != -1) return memo[bm];
    if (bm == 0) {
        memo[bm] = 1;
        return 1;
    }
    bool ans = false;
    int tmp = 0;
    VII pos;
    /* if (bm == 8) { */
    /*     printf("hi1 %d\n", ans); */
    /* } */
    for (int i = 0; i < len; i++) {
        // case 1
        if (bm & (1<<i)) {
            /* if (bm == 2) { */
            /*     printf("hi2 %d %d\n", b * cnt[bm], a * (r[bm]-l[bm]+1)); */
            /* } */
            ans |= dp(bm ^ (1<<i)) && (b * cnt[bm] >= a * (r[bm] - l[bm] + 1));
            /* if (bm == (1<<10) + (1<<11)) { */
            /*     printf("hi %d %d %d %d\n", i, cnt[bm], r[bm], l[bm]); */
            /*     cout<< ans <<" "<<bitset<20>(bm) << '\n'; */
            /* } */
            pos.pb({l[1<<i], i});
        }
    }
    /* if (bm == (1<<10) + (1<<11)) { */
    /*     /1* printf("hi2 %d\n", ans); *1/ */
    /*     cout<< ans <<" "<<bitset<20>(bm) << '\n'; */
    /* } */
    sort(all(pos));
    for (auto &[_, i] : pos) {
        tmp |= (1<<i);
        int other = bm ^ tmp;
        if (tmp == 0 || other == 0) continue;
        if (max(l[tmp], l[other]) > min(r[tmp], r[other])) {
            /* error(bitset<10>(bm)); */
            /* error(bitset<10>(tmp)); */
            /* error(bitset<10>(other)); */
            ans |= dp(tmp) && dp(other);
        }
    }
    /* if (bm == (1<<10) + (1<<11)) { */
    /*     /1* printf("hi2 %d\n", ans); *1/ */
    /*     cout<< ans <<" "<<bitset<20>(bm) << '\n'; */
    /* } */
    memo[bm] = ans;
    return memo[bm];
}

int main(){
    cin >> n >> a >> b >> s;
    rep (i, 0, n) if (m.count(s[i]) == 0) m[s[i]] = m.size();
    len = m.size();
    rep (i, 0, 1<<len) {
        l[i] = INF;
        r[i] = -1;
        cnt[i] = 0;
        memo[i] = -1;
    }
    rep (i, 0, n) {
        int tmp = 1<<(m[s[i]]);
        l[tmp] = min(l[tmp], i);
        r[tmp] = max(r[tmp], i);
        cnt[tmp]++;
    }
    /* for (int i = 1; i <= 8; i*=2){ */
    /*     printf("%d %d %d %d\n", i, l[i], r[i], cnt[i]); */
    /* } */
    /* printf("hi %d\n", m['v']); */
    /* for (auto x : m) printf("%c %d\n", x.fi, x.se); */
    /* return 0; */
    rep (i, 0, 1<<len) {
        if (__builtin_popcount(i) == 1) continue;
        /* printf("haha %d\n", i); */
        rep(j, 0, len) {
            if (i & (1<<j)) {
                cnt[i] += cnt[1<<j];
                l[i] = min(l[i], l[1<<j]);
                r[i] = max(r[i], r[1<<j]);
            }
        }
    }
    /* int tmp = (1<<10) + (1<<11); */
    /* printf("what the fuck %d %d %d\n", cnt[tmp], l[tmp], r[tmp]); */
    /* return 0; */
    /* for (int i = 1; i <= 8; i*=2){ */
    /*     printf("%d %d %d %d\n", i, l[i], r[i], cnt[i]); */
    /* } */
    VI ans;
    int total = (1<<len) - 1;
    /* error(dp(total ^ (1<<3))); */
    /* return 0; */
    rep (i, 0, len) {
        if (dp(total ^ (1<<i))) {
            ans.pb(i);
        }
    }
    printf("%d ", (int)ans.size());
    vector<char> ttt;
    for (auto x : m) {
        for (int y : ans) {
            if (x.se == y) printf("%c ", x.fi);
        }
    }
    return 0;
}

