4506 {
4507 unordered_map<string, int> restaurants;
4508 unordered_map<string, int> index1;
4509 unordered_map<string, int> index2;
4510 for(int i = 0; i < list1.size(); i++) {
4511 restaurants[list1[i]]++;
4512 index1[list1[i]] = i;
4513 }
4514 for(int i = 0; i < list2.size(); i++) {
4515 restaurants[list2[i]]++;
4516 index2[list2[i]] = i;
4517 }
4518 unordered_set<string> optional_restaurants;
4519 for(auto [restaurant, count]: restaurants) {
4520 if(count > 1) {
4521 optional_restaurants.insert(restaurant);
4522 }
4523 }
4524 int min_index_sum = INT_MAX;
4525 for(const auto &optional_restaurant: optional_restaurants) {
4526 int index_sum = index1[optional_restaurant] + index2[optional_restaurant];
4527 min_index_sum = min(min_index_sum, index_sum);
4528 }
4530 for(const auto &optional_restaurant: optional_restaurants) {
4531 int index_sum = index1[optional_restaurant] + index2[optional_restaurant];
4532 if(index_sum == min_index_sum) {
4533 ans.push_back(optional_restaurant);
4534 }
4535 }
4537 }
vector< vector< int > > ans