#include <bits/stdc++.h>
using namespace std;

struct Test { uint64_t inputHash; int score; };

const int NO_TESTS = 12;
const Test TESTS[] = {
    {17921, 9},
    {28762, 9},
    {26410, 9},
    {34245226, 9},
    {32429, 9},
    {34221984, 9},
    {40070, 9},
    {144586, 9},
    {57272, 9},
    {3326908, 9},

    // Oficiu
    {8214, 5},
    {28752, 5},
};

uint64_t getFileHash(string file) {
    ifstream fin(file);
    char c;
    uint64_t hash;

    hash = 0;
    while (fin.get(c))
        hash += c * c;

    fin.close();

    return hash;
}

void result(int p, const char* format, ...) {
	va_list args;
	
    va_start(args, format);
	vfprintf(stderr, format, args);
	va_end(args);
	
	printf("%d", p);
	exit(0);
}

int getTestScore() {
    uint64_t inputHash;
    int testIndex;

    inputHash = getFileHash("partit.in");
    testIndex = 0;
    while (testIndex < NO_TESTS && TESTS[testIndex].inputHash != inputHash)
        ++testIndex;
	
    if (testIndex == NO_TESTS)
        result(0, "Input hash mismatch: %llu", inputHash);
    
    return TESTS[testIndex].score;
}

int main() {
    int testScore = getTestScore();

    FILE* fout = fopen("partit.out", "r");
    FILE* fok = fopen("partit.ok", "r");

    if (!fout)
        result(0, "Fisier de iesire lipsa!");

    int outResult, okResult;

	while (fscanf(fok, "%d", &okResult) == 1) {
		if (fscanf(fout, "%d", &outResult) != 1 || okResult != outResult)
			result(0, "Incorect", okResult, outResult);
	}

    result(testScore, "Ok");

    fclose(fout);
    fclose(fok);
    return 0;
}