#include <bits/stdc++.h>
using namespace std;
const long long inf(101010101010101010LL);
int n;
struct uf {
  int par[1005];
  uf() {
    for (int i(0); i < (n); i++) par[i] = i;
  }
  int ff(int x) { return par[x] == x ? x : par[x] = ff(par[x]); }
  void uu(int x, int y) {
    x = ff(x), y = ff(y);
    if (x - y) par[x] = y;
  }
};
vector<pair<int, int> > edges;
vector<int> eA, eB;
char col[20];
int main() {
  cin >> n;
  int m;
  cin >> m;
  edges.resize(m);
  uf fA, fB;
  for (int id(0); id < (m); id++) {
    int x, y;
    scanf("%d%d%s", &x, &y, col);
    x--, y--;
    edges[id] = make_pair(x, y);
    if (col[0] == 'S') {
      if (fA.ff(x) == fA.ff(y)) continue;
      eA.push_back(id), fA.uu(x, y);
    } else {
      if (fB.ff(x) == fB.ff(y)) continue;
      eB.push_back(id), fB.uu(x, y);
    }
  }
  uf fAB_1;
  for (__typeof((eA).end()) it((eA).begin()); it != (eA).end(); ++it) {
    int id(*it), x(edges[id].first), y(edges[id].second);
    fAB_1.uu(x, y);
  }
  vector<int> eB_selected;
  for (__typeof((eB).end()) it((eB).begin()); it != (eB).end(); ++it) {
    int id(*it), x(edges[id].first), y(edges[id].second);
    if (fAB_1.ff(x) != fAB_1.ff(y)) {
      eB_selected.push_back(id);
      fAB_1.uu(x, y);
    }
  }
  uf fAB_2;
  int nA(0), nB(((int)(eB_selected).size()));
  for (__typeof((eB_selected).end()) it((eB_selected).begin());
       it != (eB_selected).end(); ++it) {
    int id(*it), x(edges[id].first), y(edges[id].second);
    fAB_2.uu(x, y);
  }
  for (__typeof((eB).end()) it((eB).begin()); it != (eB).end(); ++it)
    if (nB < (n - 1) / 2) {
      int id(*it), x(edges[id].first), y(edges[id].second);
      if (fAB_2.ff(x) != fAB_2.ff(y)) {
        eB_selected.push_back(id);
        fAB_2.uu(x, y);
        nB++;
      }
    }
  vector<int> eA_selected;
  for (__typeof((eA).end()) it((eA).begin()); it != (eA).end(); ++it) {
    int id(*it), x(edges[id].first), y(edges[id].second);
    if (fAB_2.ff(x) != fAB_2.ff(y)) {
      eA_selected.push_back(id);
      fAB_2.uu(x, y);
      nA++;
    }
  }
  if (nA != (n - 1) / 2 || nB != (n - 1) / 2) {
    puts("-1");
    return 0;
  }
  cout << (n - 1) << endl;
  vector<int> selected;
  for (__typeof((eA_selected).end()) it((eA_selected).begin());
       it != (eA_selected).end(); ++it)
    selected.push_back(*it);
  for (__typeof((eB_selected).end()) it((eB_selected).begin());
       it != (eB_selected).end(); ++it)
    selected.push_back(*it);
  for (__typeof((selected).end()) it((selected).begin());
       it != (selected).end(); ++it) {
    if (it != (selected).begin()) cout << " ";
    cout << (*it) + 1;
  }
  cout << endl;
}
