#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <string>

using namespace std;

struct Vals
{
	int i;
	int x;
};

int findPath(Vals value, vector<Vals> grid);

int main()
{
	ifstream fin;
	ofstream fout;

	fin.open("DATA5.txt");
	fout.open("OUT5.txt");

	for (int i = 0; i < 5; i++)
	{
		vector <Vals> nodes;

		int entry;
		fin >> entry;
		for (int j = 0; j < entry; j++)
		{
			Vals y;
			fin >> y.i;
			fin >> y.x;
			nodes.push_back(y);
		}
		for (int j = 0; j < nodes.size(); j++)
		{
			if (nodes[j].i == 1)
			{
				int answer = findPath(nodes[j], nodes);
				if (answer > 0)
				{
					fout << answer << endl;
					break;
				}
			}
		}
	}

	fout.close();
	fin.close();
}

int findPath(Vals value, vector<Vals> grid)
{
	int counter = 0;
	if (value.x == 1)
	{
		return 1;
	}
	else
	{
		for (int i = 0; i < grid.size(); i++)
		{
			if (value.x == 1)
			{
				counter += 1;
				break;
			}
			if (grid[i].i == value.x)
			{
				int temp = findPath(grid[i], grid);
				if (temp > 0)
					counter += temp;
			}
		}
	}
	if (counter == 0)
	{
		return -1;
	}
	else
	{
		return counter + 1;
	}
}
