import math


def __calc_entropy_passphrase(word_count, word_bank_size, pad_length, pad_bank_size):
    """
    Approximates the minimum entropy of the passphrase with its possible deviation
    :param word_count: Number of words in passphrase
    :param word_bank_size: Total number of words in the word bank
    :param pad_length: Number of characters used in padding
    :param pad_bank_size: The size of the character pool used to generate padding
    :return: A tuple containing the minimum entropy and deviation
    """
    # Multiply word bank size by 2 since there are uppercase or lower case words
    inner = math.pow(word_bank_size*2, word_count)
    entropy = math.log(inner, 2)

    inner = math.pow(pad_bank_size, pad_length)
    deviation = math.log(inner, 2)

    return entropy, deviation