First of all, I do not really understand why there is an Apply to each loop in your flow. When the flow is triggered by a Forms response, there should only be a single response to process (the one that triggered the flow). Are you using some other actions between the trigger and the loop?
Then the obviously incorrect thing you're doing is that you are trying to get a SharePoint item using a Forms response Id. These do not match. The Id is a unique thing. The Forms response Id will give you the specific response. It has nothing to do with SharePoint items. What you need to do instead is use the Get items activity to get all items. You can use a filter query there to say something like {SharePointColumnName} eq '{FirstName}' where you would need to replace {SharePointColumnName} with an actual column name where you store the first name and {FirstName} with the dynamic content from the Forms response. You can do multiple filters like that (for last name, too) by separating them with an AND operator.
This will return an array (even if you filter it with the filter query, it will return an array of one item).
You can then use the empty() expression in your condition to check if the resulting array is empty or not. Since all you need to check is whether an exists, this will be enough. You can do a Condition action with empty(Outputs('Get items')) in the first operand and bool(1) as the second operand. This will be true if the array is empty (no items with the same name).
-------------------------------------------------------------------------
If I have answered your question, please mark it as the preferred solution.
If you like my response, please give it a Thumbs Up.
If you are interested in Power Automate, you might want to follow me on LinkedIn at https://www.linkedin.com/in/agnius-bartninkas/