#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;

const int DIGIT = 14;
int a[DIGIT][10];

unordered_map<int, long long> dp[DIGIT];

long long pow10[DIGIT];

long long dfs(int index, int z) {
	if (index == DIGIT) {
		if (z == 0) {
			return 0;
		}
		return -1;
	}
	// read Cache
	if (dp[index].count(z)) {
		return dp[index][z];
	}
	dp[index][z] = -1;
	for (int w = 1; w < 10; w++) {
		// mui x 0
		// add x z
		int newx = z;
		if (newx < 0 || a[index][1] <= 0) {
			continue;
		}
		// mod x 26
		newx %= a[index][1];
		if (a[index][2] == 0) {
			continue;
		}
		// div z 1
		int newz = z / a[index][2];
		// add x 12
		newx += a[index][3];
		// eql x w
		newx = newx == w ? 1 : 0;
		// eql x 0
		newx = newx == a[index][4] ? 1 : 0;
		// mul y 0
		// add y 25
		int newy = a[index][6];
		// mul y x
		newy *= newx;
		// add y 1
		newy += a[index][7];
		// mul z y
		newz *= newy;
		// mul y 0
		newy *= a[index][8];
		// add y w
		newy += w;
		// add y 4
		newy += a[index][9];
		// mul y x
		newy *= newx;
		// add y z
		newz += newy;
		long long tmp = dfs(index + 1, newz);
		if (tmp == -1) {
			continue;
		}
		dp[index][z] = tmp + w * pow10[DIGIT - 1 - index];
		return dp[index][z];
	}
	return dp[index][z];
}

int main() {
	pow10[0] = 1;
	for (int i = 1; i < DIGIT; i++) {
		pow10[i] = pow10[i - 1] * 10;
	}
	string s;
	for (int i = 0; i < DIGIT; i++) {
		// inp w
		getline(cin, s); 
		// mul x 0
		cin >> s >> s >> a[i][0] >> ws;
		// add x z
		getline(cin, s);
		// mod x 26
		cin >> s >> s >> a[i][1] >> ws;
		// div z 1
		cin >> s >> s >> a[i][2] >> ws;
		// add x 12
		cin >> s >> s >> a[i][3] >> ws;
		// eql x w
		getline(cin, s);
		// eql x 0
		cin >> s >> s >> a[i][4] >> ws;
		// mul y 0
		cin >> s >> s >> a[i][5] >> ws;
		// add y 25
		cin >> s >> s >> a[i][6] >> ws;
		// mul y x
		getline(cin, s);
		// add y 1
		cin >> s >> s >> a[i][7] >> ws;
		// mul z y
		getline(cin, s);
		// mul y 0
		cin >> s >> s >> a[i][8] >> ws;
		// add y w
		getline(cin, s);
		// add y 4
		cin >> s >> s >> a[i][9] >> ws;
		// mul y x
		getline(cin, s);
		// add z y
		getline(cin, s);
	}
	cout << dfs(0, 0) << endl;
}
