input: from typing import Callable, Dict, Any
  
  def optimize(fn: Callable[[Any], int], params: Any) -> Dict[str, int]:
      """Optimizes the given function by varying the input parameters within a specified range and returns the best parameters.
      >>> from dataclasses import dataclass
      >>> @dataclass
      ... class Params:
      ...     a: int
      ...     b: int
      ...     c: int
      ... 
      >>> def get_result(params: Params) -> int:
      ...     return params.a + params.b + params.c
      ... 
      >>> optimize(get_result, Params(a=1, b=2, c=3))
      {'a': 11, 'b': 2, 'c': 3}
      """
      best_score = 0
      best_params = None
      for a in range(params.a - 10, params.a + 10):
          for b in range(params.b - 10, params.b + 10):
              for c in range(params.c - 10, params.c + 10):
                  new_params = Params(a, b, c)
                  score = fn(new_params)
                  if score > best_score:
                      best_score = score
                      best_params = {
                          'a': a,
                          'b': b,
                          'c': c
                      }
      return best_params
output:     best_score = 0
      best_params = None
      for a in range(params.a - 10, params.a + 10):
          for b in range(params.b - 10, params.b + 10):
              for c in range(params.c - 10, params.c + 10):
                  new_params = Params(a, b, c)
                  score = fn(new_params)
                  if score > best_score:
                      best_score = score
                      best_params = {
                          'a': a,
                          'b': b,
                          'c': c
                      }
      return best_params