#include<iostream>
#include<vector>
#include<utility>
#include<string>
#include<algorithm>

using namespace std;

// 単語の区切りはistreamに任せる
// 単語はベクターに保持する。
// 出現頻度最多、最長文字数の単語はそれぞれ1つなので、
// すべての単語を入力後、それぞれに該当するものを探す。

int main() {
	// 単語の入力
	string input_str;
	vector<string> units;
	while (cin >> input_str) {
		units.push_back(move(input_str));
	}

	// 文字列は無駄にコピーさせないためポインタで記録しておく
	string* max_count_str = nullptr;
	auto max_count = 0;
	string* max_len_str = nullptr;
	auto max_len = 0;
	for (auto& a : units) {
		// 出現頻度が多いものを探す
		int temp_count = count(units.begin(), units.end(), a);
		if (max_count < temp_count) {
			max_count = temp_count;
			max_count_str = &a;
		}
		// 最も長い文字列を探す
		if (max_len < a.length()) {
			max_len = a.length();
			max_len_str = &a;
		}
	}

	cout << *max_count_str << ' ' << *max_len_str << endl;

	return 0;
}