There is an array of strings. All strings contains similar _letters_ except one. Try to find it!

```python
find_uniq([ 'Aa', 'aaa', 'aaaaa', 'BbBb', 'Aaaa', 'AaAaAa', 'a' ]) # => 'BbBb'
find_uniq([ 'abc', 'acb', 'bac', 'foo', 'bca', 'cab', 'cba' ]) # => 'foo'
```

Strings may contain spaces. Spaces is not significant, only non-spaces symbols matters. E.g. string that contains only spaces is like empty string.

It’s guaranteed that array contains more than 3 strings.

This is the second kata in series:

1. [Find the unique number](https://www.codewars.com/kata/585d7d5adb20cf33cb000235)
2. Find the unique string (this kata)
3. [Find The Unique](https://www.codewars.com/kata/5862e0db4f7ab47bed0000e5)

Difficulty: introductory

Starter code:

def find_uniq(arr):
	

Solutions:
from collections import defaultdict

def find_uniq(a):
    d = {}
    c = defaultdict(int)
    for e in a:
        t = frozenset(e.strip().lower())
        d[t] = e
        c[t] += 1
    
    return d[next(filter(lambda k: c[k] == 1, c))]

def find_uniq(arr):
    if set(arr[0].lower()) == set(arr[1].lower()):
        majority_set = set(arr[0].lower())
    elif set(arr[0].lower()) == set(arr[2].lower()):
        majority_set = set(arr[0].lower())
    else:
        majority_set = set(arr[1].lower())
    
    for string in arr:
        if set(string.lower()) != majority_set:
            return string


def find_uniq(arr):
    arr.sort(key=lambda x: x.lower())
    arr1 = [set(i.lower()) for i in arr]
    return arr[0] if arr1.count(arr1[0]) == 1 and str(arr1[0]) != 'set()' else arr[-1]

import numpy as np
def find_uniq(arr):
    arr1 = [''.join(sorted(set(i.lower().replace(' ','')))) for i in arr]
    lst = np.unique(arr1)
    for i in lst:
        if arr1.count(i) == 1:
            return arr[arr1.index(i)]  


from collections import Counter


def find_uniq(arr):
    c = Counter("".join(arr).lower())
    match = [string_ for string_ in arr if min(c, key=c.get) in string_.lower()]
    return match[0]


def find_uniq(arr):
    counts = {}
    result = {}
    
    for s in arr:
        hash = frozenset(s.strip().lower())
        counts[hash] = counts.get(hash, 0) + 1
        result[hash] = s
        
        if len(counts) > 1 and counts[max(counts, key=counts.get)] > 1:
            return result[min(counts, key=counts.get)]

from collections import Counter

def find_uniq(arr):
    res = Counter(''.join(arr)).most_common()
    return ''.join([x for x in arr if res[-1][0] in x])


def find_uniq(arr):
  S = ''. join (arr)   
  D = {}
  for i in S:
    D[i]=D.get(i,0)+1
  L = sorted([(v, k) for k, v in list(D.items())], reverse=True)
  Minv = L[-1][0] 
  Min = L[-1][1] 
  for word in arr:
    if word.count(Min) >= Minv:
      return word