#include <fstream>
#include <vector>
#include <iostream>
using namespace std;

ifstream in;
ofstream out;

int n;
int a, b;
bool path [100] [100];
int searched [100];
int mincycle;

int main () {
	in.open ("DATA5.txt");
	out.open ("OUT5.txt");
	for (int h = 0;h != 5; ++h) {
		in >> n;
		for (int c = 0; c!= 100; ++c)
			for (int d = 0;d != 100; ++d)
				path [c] [d] = false;
		for (int c = 0; c!= n; ++c) {
			in >> a;
			in >> b;
			path [a-1] [b-1] = true;
		}
		mincycle = 500;
		for (int c = 0; c != 100; ++c) {
		if (path [0] [c]) {	
			for (int d = 0; d!= 100; ++d)
				searched [d] = 9999;
			vector <int> v1, v2, *p1, *p2;
			p1 = &v1; p2 = &v2;
			p1->push_back (c);
			searched [c] = 1;
			while (!p1->empty ()) {
				for (int d = 0; d!= p1->size (); ++d) {
					cout << h << ' '<< (*p1) [d] << endl;
					for (int e = 0; e != 100; ++e) {
						if (path [(*p1) [d]] [e] && searched [e] == 9999) {
							searched [e] = searched [(*p1) [d]] + 1;
							p2->push_back (e);
							cout << e << ' ';
						}
					}
				}
				if (searched [0] != 9999)
					break;
				p1->clear ();
				vector <int> *temp = p1; p1 = p2; p2 = temp;
			}
			if (searched [0] < mincycle)
				mincycle = searched [0];
		}}
		out << mincycle << endl;
	}
}

