Let's say I want to give a score for the uniqueness of a username (meaning the higher the score the less likely someone else has it). For example, the username "car" should have a very low score but "fastredcar1887$" should have a very high score.

My code works great and only have a low fail rate, But I think there are better ways. each letter of the alphabet increases the score by one. If there is numbers it increases the score by 2 and the total numbers of numbers in the name is to the power of 2, symbols are the same as numbers but not divided by 2. 

```
scoreNum=(1/2*totalnumbers)^2+2
ScoreAlpha=totalalpha
ScoreSympol=(totalsymbols)^2+2

```

Then `totalscore=scoreNum+Scorealpha+scoresympol`

```py
def rating(name):
    rate=0
    num=0
    symbol=0
    thereisnum=False
    thereissymb=False
    for i in range(len(name)):
        if name[i].isnumeric():
            thereisnum=True

            num+=1
        if name[i].isalpha():
            rate+=1
        if name[i] in ",*&^%$#@:!()/\+-.~<>{}?=+@!#":
            thereisnum=True

            symbol+=1
    if thereisnum==True:

        rate+=int(round(1/2*(num)**2+2))
    if thereissymb==True:    
        rate+=int(round((symbol)**2+2))  
    return rate   

```

I want to have better results for example, 123456789 is very common but my system rate it very high. I believe there are a lot of ways to better test the usernames. For example, some letters are rarer. What is the best way of dealing with this problem? Thank you.