#include <bits/stdc++.h>
using namespace std;
int k;
bitset<200200> used;
list<int> ady[200200];
long long s[200200];
long long solution = 0;
void dfs(int u, int p) {
  if (used[u]) s[u]++;
  for (__typeof((ady[u]).begin()) v = (ady[u]).begin(); v != (ady[u]).end();
       v++)
    if (*v != p) {
      dfs(*v, u);
      s[u] += s[*v];
    }
  solution += min(s[u], 2 * k - s[u]);
}
int main() {
  int n, u, v;
  scanf("%d %d", &n, &k);
  for (int i = 0; i < int(2 * k); i++) {
    scanf("%d", &u);
    used[u] = true;
  }
  for (int i = 0; i < int(n - 1); i++) {
    scanf("%d %d", &u, &v);
    ady[u].push_back(v);
    ady[v].push_back(u);
  }
  dfs(1, -1);
  printf("%lld\n", solution);
}
