  We introduce a general method for obtaining fixed-parameter algorithms for
problems about finding paths in undirected graphs, where the length of the path
could be unbounded in the parameter. The first application of our method is as
follows.
  We give a randomized algorithm, that given a colored $n$-vertex undirected
graph, vertices $s$ and $t$, and an integer $k$, finds an $(s,t)$-path
containing at least $k$ different colors in time $2^k n^{O(1)}$. This is the
first FPT algorithm for this problem, and it generalizes the algorithm of
Bj\"orklund, Husfeldt, and Taslaman [SODA 2012] on finding a path through $k$
specified vertices. It also implies the first $2^k n^{O(1)}$ time algorithm for
finding an $(s,t)$-path of length at least $k$.
  Our method yields FPT algorithms for even more general problems. For example,
we consider the problem where the input consists of an $n$-vertex undirected
graph $G$, a matroid $M$ whose elements correspond to the vertices of $G$ and
which is represented over a finite field of order $q$, a positive integer
weight function on the vertices of $G$, two sets of vertices $S,T \subseteq
V(G)$, and integers $p,k,w$, and the task is to find $p$ vertex-disjoint paths
from $S$ to $T$ so that the union of the vertices of these paths contains an
independent set of $M$ of cardinality $k$ and weight $w$, while minimizing the
sum of the lengths of the paths. We give a $2^{p+O(k^2 \log (q+k))} n^{O(1)} w$
time randomized algorithm for this problem.
