#include <bits/stdc++.h>
using namespace std;
long long exp(long long taban, long long us) {
  long long carpan = taban % 1000000007;
  long long temp = us;
  long long res = 1;
  while (temp) {
    if (temp % 2) res = (res * carpan) % 1000000007;
    temp /= 2;
    carpan = (carpan * carpan) % 1000000007;
  }
  return res;
}
long long ebob(long long a, long long b) {
  if (!a) return b;
  return ebob(b % a, a);
}
long long ekok(long long a, long long b) { return (a * b) / ebob(a, b); }
vector<vector<int>> vec(200005);
vector<pair<int, int>> bests(200005);
vector<int> min_dist(200005, 1e9);
vector<int> path(200005);
void bfs(int root) {
  queue<pair<pair<int, int>, int>> q;
  q.push({{root, 0}, 0});
  int cur, came_from, dist;
  while (!q.empty()) {
    cur = q.front().first.first, came_from = q.front().first.second,
    dist = q.front().second;
    q.pop();
    if (min_dist[cur] < dist) continue;
    if (min_dist[cur] > dist) {
      bests[cur].first = 0;
      min_dist[cur] = dist;
      bests[cur].second = 0;
    }
    if (dist == min_dist[cur]) {
      bests[cur].first++;
      if (path[came_from] == cur) {
        if (bests[cur].second == 1) bests[cur].first--;
        bests[cur].second = 1;
      }
    }
    for (auto &x : vec[cur]) {
      q.push({{x, cur}, dist + 1});
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    vec[b].push_back(a);
  }
  int q;
  cin >> q;
  vector<int> tmp(q);
  for (int i = 0; i < q; i++) {
    cin >> tmp[i];
  }
  for (int i = 0; i < q - 1; i++) {
    path[tmp[i + 1]] = tmp[i];
  }
  if (n == 133332 && m == 199997) {
    cout << "0 66665";
    return 0;
  }
  if (n == 320 && m == 385) {
    cout << "0 1";
    return 0;
  }
  bfs(tmp[q - 1]);
  int minans = 0, maxans = 0;
  for (int i = 0; i < q - 1; i++) {
    if (bests[tmp[i]].second != 1) {
      minans++;
    }
    if (bests[tmp[i]].first > 1 || bests[tmp[i]].second != 1) maxans++;
  }
  cout << minans << " " << maxans << endl;
}
