Cambridge Test

test.email+amir@example.com
testemail@example.com
test.e.mail+amir.betty@example.com
testemail@example.com
testemail+lisa@exam.ple.com
testemail@exam.ple.com
test.e.m.a.i.l@example.com
testemail@example.com
testemaile@xample.com
testemaile@xample.com
 An email address consists of a local name and a domain name, separated by the `@` symbol.  
    For example, in `user@example.com`, `user` is the local name, and `example.com` is the domain name.
    
    Besides lowercase letters, these emails may also contain `.` or `+` symbols.

    If the sender adds a `.` symbol in the local name, mail sent there will be forwarded to the same address without `.` in the local name.  
    For example, `user.abc@example.com` and `userabc@example.com` forward to the same email address.  Note, this rule does not apply to domain names.

    If the sender adds a `+` symbol in the local name, everything after the first plus sign will be ignored.  This allows certain emails to be filtered.  
    For example, `user+123@example.com` will be forwarded to `user@example.com`.  Again note, this rule does not apply to domain names.

    It is possible to use both of these rules at the same time.

    Given a string[] of email addresses, how many unique emails will there be after these filters are applied?

    Sample Input:
    string[] emails = {
        "test.email+amir@example.com",          testemail@example.com
        "test.e.mail+amir.betty@example.com",   testemail@example.com
        "testemail+lisa@exam.ple.com",          testemail@exam.ple.com
        "test.e.m.a.i.l@example.com",           testemail@example.com
        "testemaile@xample.com"                 testemaile@xample.com
    };

    Output: 
    3