#include <bits/stdc++.h>
using namespace std;

#define int long long
#define pb push_back
#define eb emplace_back
#define fi first
#define se second
#define fr(i,j,k) for(i = j; i < (k); i++)
#define all(x) x.begin(), x.end()
#define el '\n'
#define remax(a,b) a = max(a, b)
#define remin(a,b) a = min(a, b)
#define sz(x) int32_t(x.size())

typedef long double ld;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pii> vpi;
// --------------------------------------------------------------------
string to_string(string s) {
      return '"' + s + '"';
}
string to_string(const char* s) {
      return to_string((string) s);
}
string to_string(bool b) {
      return (b ? "true" : "false");
}
template <typename A, typename B>
string to_string(pair<A, B> p) {
      return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}
template <typename A>
string to_string(A v) {
      bool first = true;  string res = "{";
      for (const auto &x : v) {
            if (!first) { res += ", "; }
            first = false; res += to_string(x);
      }
      res += "}";	  return res;
}
void debug_out() { cerr << endl; }
template <typename Head, typename... Tail>
void debug_out(Head H, Tail... T) {
      cerr << " " << to_string(H);
      debug_out(T...);
}

// #define TRACE

#ifdef TRACE
#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)
#else
#define debug(...)
#endif
//============================================================================

const pii dxy[] = { {-1, 0}, {1, 0}, {0, 1}, {0, -1} };
const int mod = 1e9 + 7;
const int INF = 2e18;
const ld EPS = 1e-9;
const int NN = 4e5 + 2;
// map<int, int> cnt;

vi dp(NN, 0), nxt(NN);
vvi cnt(NN);
vector<int> markers(NN, 0);

void solve() {
      int i = 0, j = 0, k = 0, n = 0, c;
      cin >> n >> k >> c;
      string s;
      cin >> s;
      nxt[n] = n;
      for(i = n - 1; i >= 0; i--) {
            if(s[i] == 'x')
                  nxt[i] = nxt[i + 1];
            else
                  nxt[i] = i;
      }
      for(i = n -1; i >= 0; i--) {
            if(s[i] == 'x') {
                  dp[i] = dp[i + 1];
            }
             else {
                   dp[i] = 1 + dp[i + c + 1];
             }
      }
      j = k;
      bool first = 1;
      for(i = 0; i < n and j > 0; i++) {
            if(s[i] == 'x') continue;
            if(first) {
                  first = 0;
                  if(i + c + 1 < n) {
                        markers[ j-1 ] = nxt[i + c + 1];
                  }
            }
            // if(i >= markers[j]))
            if(dp[i + 1] >= j) {
                  cnt[j].pb(i); 
            } else {
                  debug(i, j);
                  assert(dp[i] >= j);
                  cnt[j].pb(i);
                  j--;
                  if(j == 0) break;
                  first = 1;
                  while(i < markers[j]){
                        i++;
                  }
                  i--;
            }
      }
      assert(j == 0);
      for(i = k; i > 0; i--) {
            if(sz(cnt[i]) == 1) {
                  cout << cnt[i][0]+1 << el;
            }
      }
}

int32_t main() {
      ios::sync_with_stdio(false); cin.tie(0); 
      int T = 1; 
      // cin >> T;
      for(int tc = 1; tc <= T; tc++) {
            solve();
       }
      return 0;
}

Measured memory_bytes: 26772