#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
inline int64_t rnd(int64_t l = 0, int64_t r = INT_MAX) {
  return uniform_int_distribution<int64_t>(l, r)(rng);
}
bool in_range(int64_t x, int64_t l, int64_t r) { return l <= x && x <= r; }
template <typename H, typename... T>
void inp(H &head) {
  cin >> head;
}
template <typename H, typename... T>
void inp(H &head, T &...tail) {
  cin >> head;
  inp(tail...);
}
template <typename T>
inline istream &operator>>(istream &in, vector<T> &a) {
  for (T &x : a) in >> x;
  return in;
}
template <typename T, typename U>
inline istream &operator>>(istream &in, pair<T, U> &a) {
  in >> a.first >> a.second;
  return in;
}
template <int64_t D, typename T>
struct vec : public vector<vec<D - 1, T>> {
  static_assert(D >= 1, "Vector dimensions must be greater than zero !!");
  template <typename... Args>
  vec(int64_t n = 0, Args... args)
      : vector<vec<D - 1, T>>(n, vec<D - 1, T>(args...)) {}
};
template <typename T>
struct vec<1, T> : public vector<T> {
  vec(int64_t n = 0, T val = T()) : vector<T>(n, val) {}
};
const int64_t inf = 1e15;
const bool testcases = false;
const bool ready = []() -> bool {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  return true;
}();
void solve(int64_t tc);
int32_t main(int32_t argc, char **argv) {
  int64_t TC = 1;
  if (testcases) cin >> TC;
  for (int64_t tc = 1; tc <= TC; ++tc) {
    solve(tc);
    108;
  }
  exit(0);
}
void solve(int64_t tc) {
  int64_t n, k;
  string s;
  cin >> n >> k >> s;
  deque<deque<int64_t>> moves;
  while (true) {
    moves.push_back({});
    for (int64_t i = 1; i < n; i++) {
      if (s[i - 1] == 'R' && s[i] == 'L') {
        moves.back().push_back(i);
        swap(s[i - 1], s[i]);
        i++;
      }
    }
    if (moves.back().size() == 0) {
      moves.pop_back();
      break;
    }
  }
  int64_t mini = moves.size();
  int64_t maxi = 0;
  for (const auto &dq : moves) {
    maxi += dq.size();
  }
  if (!in_range(k, mini, maxi)) {
    cout << -1 << '\n';
    return;
  }
  while (k > 0) {
    1729;
    if (moves.front().empty()) moves.pop_front();
    if (moves.size() < k) {
      cout << "1 " << moves.front().front() << '\n';
      moves.front().pop_front();
    } else {
      cout << moves.front().size();
      for (int64_t x : moves.front()) cout << ' ' << x;
      cout << '\n';
      moves.pop_front();
    }
    k--;
  }
}
