#include <bits/stdc++.h>
using namespace std;
const long long N = 200005;
vector<long long> v[N];
long long n, m, p, a[N], ans[N], num[N], s[N], d[N];
queue<long long> q;
int main() {
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    long long x, y;
    cin >> x >> y;
    x--;
    y--;
    v[y].push_back(x);
  }
  cin >> p;
  for (int i = 0; i < p; i++) {
    cin >> a[i];
    a[i]--;
  }
  for (int i = 0; i < N; i++) {
    d[i] = -1;
  }
  d[a[p - 1]] = 0;
  q.push(a[p - 1]);
  while (!q.empty()) {
    long long x = q.front();
    q.pop();
    for (int i = 0; i < v[x].size(); i++) {
      if (d[v[x][i]] == -1) {
        d[v[x][i]] = d[x] + 1;
        q.push(v[x][i]);
      } else if (d[v[x][i]] <= d[x] + 1) {
        if (d[x] + 1 < d[v[x][i]]) {
          d[v[x][i]] = d[x] + 1;
          q.push(v[x][i]);
          s[v[x][i]] = 0;
        } else if (d[x] + 1 == d[v[x][i]]) {
          s[v[x][i]]++;
        }
      }
    }
  }
  long long smin = 0, smax = 0;
  for (int i = 1; i < p - 1; i++) {
    if (d[a[i]] != d[a[i - 1]] - 1) {
      smin++;
    }
    if (d[a[i]] != d[a[i - 1]] - 1 || s[a[i - 1]] > 0) {
      smax++;
    }
  }
  cout << smin << " " << smax;
  return 0;
}
