<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def truncate_sentence(text, max_chars, break_words=False, padding=0):
 """Truncates a sentence. :param max_chars: The maximum characters of truncated sentence. :param break_words: If you wish to truncate given sentence strictly even if it breaks a word, set it to ``True``. It defaults to ``False`` which means truncating given sentence shorter but never breaking words. :param padding: The padding size for truncating. It is usually used to :return: The truncated sentence. """

    if break_words:
        return text[:-abs(max_chars - len(text)) - padding]

    words = []
    for word in text.split():
        predicted_len = (
            sum(map(len, words)) +  # length of words
            len(word) +  # length of next word
            len(words) - 1 +  # length of spaces
            padding)
        if predicted_len >= max_chars:
            break
        words.append(word)
    return ' '.join(words)