#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
int n, m, k;
int p[202020];
vector<int> v[202020];
int q[202020], d[202020], prv[202020];
bool other[202020];
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= m; i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    v[y].push_back(x);
  }
  scanf("%d", &k);
  for (int i = 1; i <= k; i++) scanf("%d", &p[i]);
  int e = 0;
  for (int i = 1; i <= n; i++) d[i] = INF;
  memset(prv, -1, sizeof prv);
  for (int i = 1; i < k; i++) prv[p[i]] = p[i + 1];
  int en = p[k];
  d[en] = 0;
  q[++e] = en;
  for (int f = 1; f <= e; f++) {
    int x = q[f];
    for (int i = 0; i < v[x].size(); i++) {
      int y = v[x][i];
      if (d[y] == INF) {
        q[++e] = y;
        d[y] = d[x] + 1;
      }
      if (d[y] == d[x] + 1 && prv[y] != -1 && prv[y] != x) other[y] = true;
    }
  }
  int mn = 0, mx = 0;
  for (int i = 1; i < k; i++) {
    if (d[p[i]] <= d[p[i + 1]]) {
      mn++;
      mx++;
    } else {
      if (other[p[i]]) mx++;
    }
  }
  printf("%d %d\n", mn, mx);
  return 0;
}
