input: 
  from typing import Any
  
  
  class Node:
      def __init__(self, data: Any):
          self.data = data
          self.next = None
          self.prev = None
  
  
  class DoubleLinkedList:
      def __init__(self):
          self.head = None
  
      def append(self, new_data: Any):
          new_node = Node(new_data)
          if self.head is None:
              self.head = new_node
          else:
              curr_node = self.head
              while curr_node.next != None:
                  curr_node = curr_node.next
              curr_node.next = new_node
              new_node.prev = curr_node
  
      def prepend(self, new_data: Any):
          new_node = Node(new_data)
          if self.head is None:
              self.head = new_node
              return
          new_node.next = self.head
          self.head.prev = new_node
          self.head = new_node
  
      def reverse(self):
          curr_node = self.head
          while curr_node:
              temp = curr_node.next
              curr_node.next = curr_node.prev
              curr_node.prev = temp
              curr_node = curr_node.prev
          if temp:
              self.head = temp.prev
  
  # Example:
  # obj = DoubleLinkedList()
  # obj.append(10)
  # obj.append(20)
  # obj.prepend(5)
  # obj.reverse()
  # The list will be: 20 <-> 10 <-> 5 <-> None
  
output:     
      def delete(self, data: Any):
          curr_node = self.head
          while curr_node:
              if curr_node.data == data:
                  if curr_node.prev:
                      curr_node.prev.next = curr_node.next
                  else:
                      self.head = curr_node.next
                  if curr_node.next:
                      curr_node.next.prev = curr_node.prev
                  return
              curr_node = curr_node.next
  
      def find(self, data: Any) -> bool:
          curr_node = self.head
          while curr_node:
              if curr_node.data == data:
                  return True
              curr_node = curr_node.next
          return False
  
      def print_list(self):
          curr_node = self.head
          while curr_node:
              print(curr_node.data, end=" <-> ")
              curr_node = curr_node.next
          print("None")
  