def search(searched_word, searched_def, searched_type):
    global last_page
    global words_per_page

    stat = 'false'

    result_indexes = []

    if searched_word != '' and searched_def == '' and searched_type == '':        
        for j in range(0, len(df)):
            if (searched_word.lower()) in (df['word'][j].lower()):
                result_indexes.append(j)
            else:
                pass

    elif searched_def != '' and searched_word == '' and searched_type == '':
        for j in range(0, len(df)):
            if (searched_def.lower()) in (df['definition'][j].lower()):
                result_indexes.append(j)
            else:
                pass

    elif searched_type != '' and searched_word == '' and searched_def == '':
        for j in range(0, len(df)):
            if searched_type == df['type'][j]:
                result_indexes.append(j)
            else:
                pass

    elif searched_word != '' and searched_def != '' and searched_type == '':
        for j in range(0, len(df)):
            if (searched_word.lower()) in (df['word'][j].lower()) and (searched_def.lower()) in (df['definition'][j].lower()):
                result_indexes.append(j)
            else:
                pass
                                             
    elif searched_def != '' and searched_type != '' and searched_word == '':
        for j in range(0,len(df)):
            if searched_type == df['type'][j] and (searched_def.lower()) in (df['definition'][j].lower()):
                result_indexes.append(j)
            else:
                pass

    elif searched_type != '' and searched_word != '' and searched_type == '':
        for j in range(0,len(df)):
            if searched_type == df['type'][j] and (searched_word.lower()) in (df['word'][j].lower()):
                result_indexes.append(j)
            else:
                pass

    elif searched_word != '' and searched_def != '' and searched_type != '':
        for j in range(0,len(df)):
            if searched_type == df['type'][j] and (searched_word.lower()) in (df['word'][j].lower()) and (searched_def.lower()) in (df['definition'][j].lower()):
                result_indexes.append(j)
            else:
                pass

    elif searched_word == '' and searched_def == '' and searched_type == '':
        messagebox.showwarning('Incomplete Input','Atleast One Input Field Required')
    
    if len(result_indexes) == 0:
        messagebox.showwarning('No Output', 'No Matching Word Found')
    else:
        stat = 'true'

    if stat == 'true':
        last_page = len(result_indexes) // words_per_page        
        if (len(result_indexes)/ words_per_page) > last_page or (len(result_indexes)/words_per_page) < last_page :
            last_page += 1
        else:
            pass    
        results(result_indexes, 1)
    else:
        pass