#include <bits/stdc++.h>
using namespace std;
struct edge {
  int u, v;
  int num;
  edge() {}
  edge(int uu, int vv, int nnum) { u = uu, v = vv, num = nnum; }
};
int n, m, p[200000], r[200000];
vector<edge> a, b, c, d;
vector<int> res;
void init() {
  for (int i = 0; i < n; ++i) {
    p[i] = i;
    r[i] = 1;
  }
}
int get(int u) {
  if (p[u] != u) p[u] = get(p[u]);
  return p[u];
}
void join(int u, int v) {
  if (r[u] > r[v])
    p[v] = u;
  else {
    p[u] = v;
    if (r[u] == r[v]) ++r[v];
  }
}
int main() {
  scanf("%d %d\n", &n, &m);
  for (int i = 0; i < m; ++i) {
    int u, v;
    char ch;
    scanf("%d %d %c\n", &u, &v, &ch);
    --u, --v;
    if (u != v) {
      if (ch == 'S')
        a.push_back(edge(u, v, i));
      else
        b.push_back(edge(u, v, i));
    }
  }
  if (!(n & 1)) {
    puts("-1");
    return 0;
  }
  init();
  int cnt = n - 1;
  for (typeof(b.begin()) it = b.begin(); it != b.end(); ++it) {
    int u = (*it).u;
    int v = (*it).v;
    u = get(u);
    v = get(v);
    if (u != v) {
      --cnt;
      join(u, v);
    }
  }
  if (cnt > (n - 1) / 2) {
    puts("-1");
    return 0;
  }
  for (typeof(a.begin()) it = a.begin(); it != a.end(); ++it) {
    int u = (*it).u;
    int v = (*it).v;
    u = get(u);
    v = get(v);
    if (u != v) {
      c.push_back(*it);
      --cnt;
      join(u, v);
    } else {
      d.push_back(*it);
    }
  }
  if (cnt != 0) {
    puts("-1");
    return 0;
  }
  init();
  int k = (n - 1) / 2;
  for (typeof(c.begin()) it = c.begin(); it != c.end(); ++it) {
    int u = get((*it).u);
    int v = get((*it).v);
    --k;
    join(u, v);
    res.push_back((*it).num);
  }
  for (typeof(d.begin()) it = d.begin(); it != d.end(); ++it) {
    if (k == 0) break;
    int u = get((*it).u);
    int v = get((*it).v);
    if (u != v) {
      join(u, v);
      res.push_back((*it).num);
      --k;
    }
  }
  if (k != 0) {
    puts("-1");
    return 0;
  }
  for (typeof(b.begin()) it = b.begin(); it != b.end(); ++it) {
    int u = get((*it).u);
    int v = get((*it).v);
    if (u != v) {
      join(u, v);
      res.push_back((*it).num);
    }
  }
  cout << res.size() << endl;
  for (typeof(res.begin()) it = res.begin(); it != res.end(); ++it)
    printf("%d ", (*it) + 1);
  return 0;
}
