I am making the assumption that you want to know if they have visited the home and registration page or any past visit. Not just the current visit. The page history of the user is kept in the Key Behavior Cache. But the KBC does not contain pages. But it does contain past page events and goals.
To create a page event, go to the item /sitecore/system/Settings/Analytics/Page Events
and create two new events. One for home page visit and one for registration page visit. Note the item IDs for each of these events.
Then on the home page, assign the home page visit event. On the registration page assign the registration page visit. You assign events in the image below.

Just to revisit how profiles work in Sitecore:
Profile
template: /sitecore/templates/System/Analytics/Profile
This is the container for a profile. In you image, this is Holiday Visitor
Profile Key
template: /sitecore/templates/System/Analytics/Profile Key
This is an individual scoring item for a pattern card. Remember in the end you are looking to trigger pattern cards. The profile key is a vehicle for scoring to trigger a pattern card.
Profile Card
template: /sitecore/templates/System/Analytics/Profile Card - Persona
This is a preselected set of profile keys and values. A profile card is a great thing because setting each key and value on each item would take forever. And then making a change would take for ever. By using a profile card, you are assigning a profile card to an item. One stop shopping.
Your Holiday Visitor profile card should have enough value to trigger the Holiday Visitor pattern card.
Pattern Card
template: /sitecore/templates/System/Analytics/Patterns/Pattern Card
A pattern card is the prize at the end. When you trigger enough profile keys to a certain value level, the pattern is assigned to the user. This is what you personalize on.
ProcessItem Pipeline
The technique I am going to use here it to check to see if the user has compiled enough page events for the home page (2) and registration page (3). If they have, we are going to send a profile card into the TrackingFieldProcessor.ProcessProfiles() function to trigger the pattern card.
This code is untested, but it should get you to where you need to be. You could also make this much more dynamic by using rules. But I thought rules would make this code more confusing. You can look at this repo to see how to use rules and profile items. https://github.com/buildabonfire/rule-based-profile-cards
namespace Sitecore.Feature.PersonalizationRules.Pipelines.ProcessItem
{
using System;
using System.Collections.Generic;
using System.Linq;
using Sitecore.Analytics;
using Sitecore.Analytics.Data;
using Sitecore.Analytics.Pipelines.ProcessItem;
using Sitecore.Analytics.Tracking;
using Sitecore.Data;
using Sitecore.Data.Items;
using Sitecore.Diagnostics;
public class ProcessItemForProfiles : ProcessItemProcessor
{
// this is profile card value field on the profile card template.
public static ID ProfileCardValue = new ID("{85970AB7-22EA-4206-BE86-C0167178860B}");
public override void Process(ProcessItemArgs args)
{
Assert.ArgumentNotNull((object)args, "args");
var registrationPageEventGuid = new Guid("ID For Registration Page Event");
var homePageEventGuid = new Guid("ID For Home Page Event");
// lets check to see if we have enough events and lets see if the user is already in the "Holiday Visitor" profile.
if (IsPageEventCount(registrationPageEventGuid, 3)
&& IsPageEventCount(homePageEventGuid, 2)
&& !Tracker.Current.Interaction.Profiles.ContainsProfile("Holiday Visitor"))
{
var profileItem = Sitecore.Context.ContentDatabase.GetItem(new ID("ID to the profile card"));
ProcessProfile(profileItem);
}
}
private bool IsPageEventCount(Guid pageEventId, int count)
{
var pageEvents = Tracker.Current.Session.Interaction.Pages.SelectMany(x => x.PageEvents).Where(x => !x.IsGoal);
var sessionCount = pageEvents.Count(x => x.PageEventDefinitionId == pageEventId);
var kbcCount = Tracker.Current.Session.Contact.GetKeyBehaviorCache().PageEvents.Count(x => x.Id == pageEventId);
return (sessionCount + kbcCount) > count;
}
private static void ProcessProfile(BaseItem profileItem)
{
var isActive = Tracker.Current != null && Tracker.Current.IsActive;
if (!isActive) return;
var trackingFields = new List<TrackingField>
{
new TrackingField(profileItem.Fields[ProfileCardValue])
};
var fields = (IEnumerable<TrackingField>)trackingFields;
var interaction = Tracker.Current?.Session?.Interaction;
if (interaction == null) return;
TrackingFieldProcessor.ProcessProfiles(interaction, fields.FirstOrDefault());
}
}
}
The config
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<processItem>
<processor type="Sitecore.Feature.PersonalizationRules.Pipelines.ProcessItem.ProcessItemForProfiles, Sitecore.Feature.PersonalizationRules"
patch:after="processor[@type='Sitecore.ExperienceExplorer.Business.Pipelines.ProcessItem.ProfilesPipeline, Sitecore.ExperienceExplorer.Business']"></processor>
</processItem>
</pipelines>
</sitecore>
</configuration>