// https://szkopul.edu.pl/problemset/?q=Zadanie+Komiwoja%C5%BCer+Bajtazar
// OI IX (1 etap)
#include <iostream>
#include <vector>
using namespace std;
constexpr int sizik = 100 * 1001;
constexpr int MAXLOG = 16;
std::vector<int> kra[sizik];
int jump[sizik][MAXLOG + 1];
int dep[sizik];
void jump_dfs(int v, int p) {
jump[v][0] = p;
dep[v] = dep[p] + 1;
for (int i = 1; i <= MAXLOG; i++) {
jump[v][i] = jump[jump[v][i - 1]][i - 1];
}
for (const auto& w : kra[v]) {
if (w != p) {
jump_dfs(w, v);
}
}
}
int lca(int a, int b) {
if (dep[a] < dep[b]) {
swap(a, b);
}
for (int i = MAXLOG; i >= 0; i--) {
if (dep[jump[a][i]] >= dep[b]) {
a = jump[a][i];
}
}
if (a == b) {
return a;
}
for (int i = MAXLOG; i >= 0; i--) {
if (jump[a][i] != jump[b][i]) {
a = jump[a][i];
b = jump[b][i];
}
}
return jump[a][0];
}
int main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int n;
std::cin >> n;
for (int i = 0; i < n - 1; i++) {
int a, b;
std::cin >> a >> b;
kra[a].push_back(b);
kra[b].push_back(a);
}
jump_dfs(1, 0);
int m;
std::cin >> m;
int curr = 1;
int ans = 0;
for (int i = 0; i < m; i++) {
int a;
std::cin >> a;
if (a == curr) {
continue;
}
int res = lca(curr, a);
ans += dep[a] - dep[res] + dep[curr] - dep[res];
curr = a;
}
std::cout << ans << '\n';
return 0;
}