#include <iostream>
#include <vector>
#include <string>
using namespace std;
class kuutio {
public:
int a, b, c, d, e, f;
kuutio(int ca, int cb, int cc, int cd, int ce, int cf) {
a=ca;
b=cb;
c=cc;
d=cd;
e=ce;
f=cf;
}
kuutio(){
}
void p(){
//cout << "Kuutio: " << a << b << c << d << e << f << "\n";
}
};
bool operator==(const kuutio& a, const kuutio& b) {
return (a.a == b.a && a.b == b.b && a.c == b.c && a.d == b.d && a.e == b.e && a.f == b.f);
}
kuutio rot(kuutio k){
kuutio nk;
nk.d = k.a;
nk.b = k.b;
nk.f = k.c;
nk.c = k.d;
nk.e = k.e;
nk.a = k.f;
return nk;
}
kuutio roll_f(kuutio k){
kuutio nk;
nk.a = k.e;
nk.b = k.a;
nk.c = k.b;
nk.d = k.d;
nk.e = k.c;
nk.f = k.f;
return nk;
}
kuutio roll_b(kuutio k){
kuutio nk;
nk.a = k.b;
nk.b = k.c;
nk.c = k.e;
nk.d = k.d;
nk.e = k.a;
nk.f = k.f;
return nk;
}
kuutio up(kuutio k){
kuutio nk;
nk.a = k.a;
nk.b = k.d;
nk.c = k.c;
nk.d = k.e;
nk.e = k.f;
nk.f = k.b;
return nk;
}
bool areEqual(kuutio k1, kuutio k2){
kuutio comp = k1;
for(int i = 0; i < 4; i++){
for (int j = 0; j < 4; j++){
if(comp == k2){
return true;
}
comp.p();
comp = rot(comp);
}
comp = up(comp);
}
comp = up(rot(comp));
for (int j = 0; j < 4; j++){
if(comp == k2){
return true;
}
comp.p();
comp = r(comp);
}
comp = up(up(comp));
for (int j = 0; j < 4; j++){
if(comp == k2){
return true;
}
comp.p();
comp = rot(comp);
}
comp.p();
return false;
}
int main(){
int n;
cin >> n;
vector<kuutio> kuutiot(n);
for(int i = 0; i < n; i++){
vector<string> inputs(5);
string s;
for(int j = 0; j < 5; j++){
cin >> s;
inputs[j] = s;
}
int a = inputs[0][0] - '0';
int b = inputs[0][1] - '0';
int c = inputs[0][2] - '0';
int d = inputs[1][1] - '0';
int e = inputs[2][1] - '0';
int f = inputs[3][1] - '0';
kuutio nk(a,b,c,d,e,f);
kuutiot[i]=nk;
}
for (int i = 0; i < n; i++){
string s = "";
for(int j = 0; j < n; j++){
if(i == j) continue;
if(areEqual(kuutiot[i], kuutiot[j])){
s += (to_string(j+1)+" ");
}
}
if(s == ""){
s = "-\n";
}else{
s.pop_back();
s += "\n";
}
cout << s;
}
return 0;
}