#include <bits/stdc++.h>
using namespace std;
long long int powmod(long long int a, long long int b) {
  if (b == 0) return 1;
  long long int x = powmod(a, b / 2);
  long long int y = (x * x) % 1000000007;
  if (b % 2) return (a * y) % 1000000007;
  return y % 1000000007;
}
long long int ans = 0;
int n, m;
vector<int> g[200010];
int mark[200010], tot[200010];
void dfs(int u, int p) {
  tot[u] = mark[u];
  for (int v : g[u]) {
    if (v != p) {
      dfs(v, u);
      tot[u] += tot[v];
    }
  }
  ans += min(tot[u], 2 * m - tot[u]);
}
int main() {
  scanf("%d", &n), scanf("%d", &m);
  for (int i = 0; i < 2 * m; i++) {
    int x;
    scanf("%d", &x);
    mark[x] = 1;
  }
  for (int i = 0; i < n - 1; i++) {
    int u, v;
    scanf("%d", &u), scanf("%d", &v);
    g[u].push_back(v);
    g[v].push_back(u);
  }
  dfs(1, -1);
  printf("%lld\n", ans);
  return 0;
}
