Problem p00198 (C++) — buggy submission, verdict: Runtime Error

#include <bits/stdc++.h>
using namespace std;
string s[33][6];
int check(int a, int b) {
  if (s[a][0] == s[b][0] && s[a][1] == s[b][1] && s[a][2] == s[b][2] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][4] && s[a][5] == s[b][5])
    return 1;
  return 0;
}
void r1(int a) {
  string p = s[a][0];
  swap(s[a][0], s[a][2]);
  swap(s[a][2], s[a][5]);
  swap(s[a][5], s[a][3]);
  s[a][3] = p;
}
void r2(int a) {
  string p = s[a][0];
  swap(s[a][0], s[a][1]);
  swap(s[a][1], s[a][5]);
  swap(s[a][5], s[a][4]);
  s[a][4] = p;
}
void r3(int a) {
  string p = s[a][1];
  swap(s[a][1], s[a][2]);
  swap(s[a][2], s[a][4]);
  swap(s[a][4], s[a][3]);
  s[a][3] = p;
}
int c7(int a, int b) {
  int p = 0;
  for (int i = 0; i < 4; i++) {
    r1(a);
    for (int j = 0; j < 4; j++) {
      r2(a);
      for (int k = 0; k < 4; k++) {
        r3(a);
        if (check(a, b))
          p++;
      }
    }
  }
  return p;
}
int main() {
  int n;
  while (cin >> n, n) {
    int sum = 0;
    for (int i = 0; i < n; i++)
      for (int j = 0; j < 6; j++)
        cin >> s[i][j];
    for (int i = 0; i < n; i++) {
      int p = 0;
      for (int j = i + 1; j < n; j++) {
        if (c7(i, j))
          p++;
      }
      if (p)
        sum++;
    }
    cout << sum << endl;
  }
}

Error: WA

Fixed submission:

#include <bits/stdc++.h>
using namespace std;
string s[10][6];
int c7(int a, int b) {
  if (s[a][0] == s[b][0] && s[a][1] == s[b][1] && s[a][2] == s[b][2] &&
      s[a][3] == s[b][4] && s[a][4] == s[b][3] && s[a][5] == s[b][5])
    return 1;
  if (s[a][0] == s[b][0] && s[a][1] == s[b][2] && s[a][2] == s[b][4] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][1] && s[a][5] == s[b][5])
    return 1;
  if (s[a][0] == s[b][0] && s[a][1] == s[b][4] && s[a][2] == s[b][3] &&
      s[a][3] == s[b][1] && s[a][4] == s[b][2] && s[a][5] == s[b][5])
    return 1;
  if (s[a][0] == s[b][0] && s[a][1] == s[b][3] && s[a][2] == s[b][1] &&
      s[a][3] == s[b][2] && s[a][4] == s[b][4] && s[a][5] == s[b][5])
    return 1;
  if (s[a][0] == s[b][1] && s[a][1] == s[b][0] && s[a][2] == s[b][3] &&
      s[a][3] == s[b][5] && s[a][4] == s[b][2] && s[a][5] == s[b][4])
    return 1;
  if (s[a][0] == s[b][1] && s[a][1] == s[b][2] && s[a][2] == s[b][0] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][5] && s[a][5] == s[b][4])
    return 1;
  if (s[a][0] == s[b][1] && s[a][1] == s[b][5] && s[a][2] == s[b][2] &&
      s[a][3] == s[b][0] && s[a][4] == s[b][3] && s[a][5] == s[b][4])
    return 1;
  if (s[a][0] == s[b][1] && s[a][1] == s[b][3] && s[a][2] == s[b][5] &&
      s[a][3] == s[b][2] && s[a][4] == s[b][0] && s[a][5] == s[b][4])
    return 1;
  if (s[a][0] == s[b][2] && s[a][1] == s[b][0] && s[a][2] == s[b][4] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][5] && s[a][5] == s[b][3])
    return 1;
  if (s[a][0] == s[b][2] && s[a][1] == s[b][1] && s[a][2] == s[b][0] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][4] && s[a][5] == s[b][3])
    return 1;
  if (s[a][0] == s[b][2] && s[a][1] == s[b][5] && s[a][2] == s[b][1] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][0] && s[a][5] == s[b][3])
    return 1;
  if (s[a][0] == s[b][2] && s[a][1] == s[b][4] && s[a][2] == s[b][5] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][1] && s[a][0] == s[b][3])
    return 1;
  if (s[a][0] == s[b][5] && s[a][1] == s[b][1] && s[a][2] == s[b][2] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][4] && s[a][5] == s[b][0])
    return 1;
  if (s[a][0] == s[b][5] && s[a][1] == s[b][2] && s[a][2] == s[b][3] &&
      s[a][3] == s[b][4] && s[a][4] == s[b][1] && s[a][5] == s[b][0])
    return 1;
  if (s[a][0] == s[b][5] && s[a][1] == s[b][3] && s[a][2] == s[b][4] &&
      s[a][3] == s[b][1] && s[a][4] == s[b][2] && s[a][5] == s[b][0])
    return 1;
  if (s[a][0] == s[b][5] && s[a][1] == s[b][4] && s[a][2] == s[b][1] &&
      s[a][3] == s[b][2] && s[a][4] == s[b][3] && s[a][5] == s[b][0])
    return 1;
  if (s[a][0] == s[b][4] && s[a][1] == s[b][0] && s[a][2] == s[b][3] &&
      s[a][3] == s[b][5] && s[a][4] == s[b][2] && s[a][5] == s[b][1])
    return 1;
  if (s[a][0] == s[b][4] && s[a][1] == s[b][2] && s[a][2] == s[b][0] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][5] && s[a][5] == s[b][1])
    return 1;
  if (s[a][0] == s[b][4] && s[a][1] == s[b][5] && s[a][2] == s[b][2] &&
      s[a][3] == s[b][0] && s[a][4] == s[b][3] && s[a][5] == s[b][1])
    return 1;
  if (s[a][0] == s[b][4] && s[a][1] == s[b][3] && s[a][2] == s[b][5] &&
      s[a][3] == s[b][2] && s[a][4] == s[b][0] && s[a][5] == s[b][1])
    return 1;
  if (s[a][0] == s[b][3] && s[a][1] == s[b][0] && s[a][2] == s[b][4] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][5] && s[a][5] == s[b][2])
    return 1;
  if (s[a][0] == s[b][3] && s[a][1] == s[b][1] && s[a][2] == s[b][0] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][4] && s[a][5] == s[b][2])
    return 1;
  if (s[a][0] == s[b][3] && s[a][1] == s[b][5] && s[a][2] == s[b][1] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][0] && s[a][5] == s[b][2])
    return 1;
  if (s[a][0] == s[b][3] && s[a][1] == s[b][4] && s[a][2] == s[b][5] &&
      s[a][3] == s[b][3] && s[a][4] == s[b][1] && s[a][5] == s[b][2])
    return 1;
  return 0;
}
int main() {
  int n;
  while (cin >> n, n) {
    int sum = 0;
    for (int i = 0; i < n; i++)
      for (int j = 0; j < 6; j++)
        cin >> s[i][j];
    for (int i = 0; i < n; i++) {
      int p = 0;
      for (int j = i + 1; j < n; j++) {
        if (c7(i, j))
          p++;
      }
      if (p)
        sum++;
    }
    cout << sum << endl;
  }
}