#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:134217728")
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
int n;
int m;
vector<int> v1, v2;
int x1[100500], x2[100500];
int root[100500];
int get(int x) {
  if (x == root[x]) return x;
  return root[x] = get(root[x]);
}
void merge(int a, int b) {
  if (rand() & 1)
    root[get(a)] = get(b);
  else
    root[get(b)] = get(a);
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < (m); i++) {
    int x, y;
    string s;
    cin >> x >> y >> s;
    x--;
    y--;
    x1[i] = x;
    x2[i] = y;
    if (s == "S")
      v1.push_back(i);
    else
      v2.push_back(i);
  }
  if (n % 2 == 0) {
    cout << -1 << endl;
    return 0;
  }
  for (int i = 0; i < (n); i++) root[i] = i;
  for (int i = 0; i < (((int)(v1).size())); i++) {
    int a = x1[v1[i]];
    int b = x2[v1[i]];
    if (get(a) != get(b)) merge(a, b);
  }
  vector<int> ans1, ans2;
  for (int i = 0; i < (((int)(v2).size())); i++) {
    int a = x1[v2[i]];
    int b = x2[v2[i]];
    if (get(a) != get(b)) {
      merge(a, b);
      ans2.push_back(v2[i]);
    }
  }
  for (int i = 0; i < (n); i++)
    if (get(0) != get(i)) {
      cout << -1 << endl;
      return 0;
    }
  for (int i = 0; i < (n); i++) root[i] = i;
  for (int i = 0; i < (((int)(ans2).size())); i++) {
    int a = x1[ans2[i]];
    int b = x2[ans2[i]];
    if (get(a) != get(b)) merge(a, b);
  }
  for (int i = 0; i < (((int)(v2).size())); i++) {
    if (((int)(ans2).size()) >= (n - 1) / 2) break;
    int a = x1[v2[i]];
    int b = x2[v2[i]];
    if (get(a) != get(b)) {
      merge(a, b);
      ans2.push_back(v2[i]);
    }
  }
  if (((int)(ans2).size()) != (n - 1) / 2) {
    cout << -1 << endl;
    return 0;
  }
  for (int i = 0; i < (((int)(v1).size())); i++) {
    int a = x1[v1[i]];
    int b = x2[v1[i]];
    if (get(a) != get(b)) {
      merge(a, b);
      ans1.push_back(v1[i]);
    }
  }
  cout << n - 1 << endl;
  for (int i = 0; i < (((int)(ans1).size())); i++) cout << ans1[i] + 1 << ' ';
  for (int i = 0; i < (((int)(ans2).size())); i++) cout << ans2[i] + 1 << ' ';
  cout << endl;
  return 0;
}
