In [15]:
def make_board(board):
    new_board = []
    for i in board:
        i = i[i.index("“")+1:i.index("”")]
        new_board.append(i)
    return new_board

def make_scanner(board):
    scanner = []
    ingredient = []
    for i in board:
        for j in i:
            ingredient.append(j)
    ingredient = set(ingredient)
    for i in ingredient:
        scanner.append([[i,i],[i,i]])
    return scanner

def make_location(scanner,new_board):
    location = []
    for i in range(n):
        for j in range(m):
            if i+1<=m and j+1<=n :
                try:
                    for k in scanner:
                        if k == [[new_board[i][j],new_board[i][j+1]],[new_board[i+1][j],new_board[i+1][j+1]]]:
                            location.append((i,j))
                            location.append((i,j+1))
                            location.append((i+1,j))
                            location.append((i+1,j+1))
                except:
                    IndexError
    location = [list(i) for i in set(location)]
    return location


def delete_block(new_board,location):
    for i,j in location:
        new_board[i][j] = "0"
    
    zipped = [list(i) for i in list(zip(*new_board))]
    zero_range = []
    for k in range(len(zipped)):
        if "0" in zipped[k]:
            zero_range.append([k,zipped[k].index("0"),zipped[k].count("0")])
        else:
            pass
    for i in zero_range:
        zipped[i[0]] = zipped[i[0]][i[1]:i[1]+i[2]] + zipped[i[0]][:i[1]]+ zipped[i[0]][i[1]+i[2]:]

    new_board = [list(i) for i in list(zip(*zipped))]
    return new_board

def main():
    m,n  = map(int,input().split( ))
    board = [list(i) for i in map(str,input().split(","))]
    new_board = make_board(board)
    scanner = make_scanner(new_board)
    location = make_location(scanner,new_board)
    score = []
    while len(location) != 0:
        new_board = delete_block(new_board,location)
        score.append(len(location))
        del[location[:]]
        location = make_location(scanner,new_board)
    return(sum(score))

In [19]:
print(main())


4 5
[“CCBDE”, “AAADE”, “AAABF”, “CCBBF”]	
14

In [20]:
print(main())


6 6
[“TTTANT”, “RRFACC”, “RRRFCC”, “TRRRAA”, “TTMMMF”, “TMMTTJ”]
15