#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
 
class Person
{
	string first;
    string last;
    int age;
 
public:
	Person(string first_name, string last_name, int the_age);
 
	string getFirstName() const { return first; }
	string getLastName() const { return last; }
    int getAge() const { return age; }
};
 
Person::Person(string first_name, string last_name, int the_age){
	first = first_name;
	last = last_name;
	age = the_age;
} 
 
int main()
{
	vector<Person> people;
	people.emplace_back("Joe", "Smoe", 25);
	people.emplace_back("John", "Cool-Johnson", 15);
	people.emplace_back("Paul", "Bob", 1000);

	vector<string> names;
	names.reserve(people.size());

	for(const Person &p : people) {
	    names.push_back(p.getFirstName());
	}

	auto max_name = max_element(
	    names.begin(), names.end(),
	    [](const string &a, const string &b){
    	    return a.size() < b.size();
    	}
	)->size();

	cout << max_name;

	return 0;
}