/// cut&bridge by muoii
/// vn.spoj.com/problems/GRAPH_/
#include <bits/stdc++.h>
using namespace std;
#define tag "main"
#define maxn 10007
#define oo 1000000007LL
#define mid ((l+r)>>1)
#define getbit(x,i) ((x)>>(i)&1)
#define onbit(x,i) ((x)|(1<<(i)))
#define offbit(x,i) ((x)&~(1<<(i)))
#define cntbit(x) (__builtin_popcountll(x))
#define meset(a,x) memset(a,x,sizeof(a))
#define forinc(i,a,b) for(int i=a;i<=b;i++)
#define fordec(i,a,b) for(int i=a;i>=b;i--)
#define debug(x) cerr<<#x<<" = "<<x<<"\n"
#define runtime(stime) ((clock() - stime) / CLOCKS_PER_SEC * 1000)
#define checkfile(FiLeNaMe) { if(fopen(FiLeNaMe".inp","r")) freopen(FiLeNaMe".inp","r",stdin),freopen(FiLeNaMe".out","w",stdout); }
template<typename T> inline void inp(T &x) { static char k; static bool neg; while((k=getchar())!='-' && !isdigit(k)); neg = k=='-'; x=(neg=k=='-')?0:k-48; while(isdigit(k=getchar())) x = (x<<3) + (x<<1) + k-48; x=neg?-x:+x; }
template<typename T> inline void out(T x) { if(x<0) putchar('-'),x=-x; if(x>9) out(x/10); putchar(x%10+48); }
#define space putchar(' ')
#define endline putchar('\n')
#define inpint ({ int x; inp(x); x; })
#define inpchar ({ char k; while((k=getchar())==' ' || k=='\n'); k; })
#define inpstr ({ char k; while((k=getchar())==' ' || k=='\n'); string s=""; s+=k; while((k=getchar())!=' ' && k!='\n') s+=k; s; })
/// --------------------------------------------------------------------------------------------------------------------------------
#define long long long
int n,m;
vector<int> adj[maxn];
int par[maxn];
int num[maxn],low[maxn];
int dfsTime;
int cut,bridge;
bool dd[maxn];
void dfs(int u) {
if(dd[u]) return;
dd[u] = 1;
num[u] = ++dfsTime;
int childs = 0;
bool isCut = 0;
for(int v : adj[u]) {
if(dd[v]) {
if(v!=par[u]) low[u] = min(low[u],num[v]);
continue;
}
++childs;
par[v]=u;
dfs(v);
low[u] = min(low[u],low[v]);
isCut |= (low[v]>=num[u]) && (par[u] || childs>=2) ;
bridge+=(low[v]>=num[v]);
}
cut+=isCut;
}
void enter(){
cin>>n>>m;
int u,v;
forinc(i,1,m) {
cin>>u>>v;
adj[u].push_back(v);
adj[v].push_back(u);
}
}
void solve(){
fill(low+1,low+n+1,oo);
forinc(i,1,n) dfs(i);
cout<<cut<<" "<<bridge;
}
int32_t main()
{
checkfile(tag);
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
enter();
solve();
return 0;
}
Ly8vIGN1dCZicmlkZ2UgYnkgbXVvaWkKLy8vIHZuLnNwb2ouY29tL3Byb2JsZW1zL0dSQVBIXy8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgdGFnICJtYWluIgojZGVmaW5lIG1heG4gMTAwMDcKI2RlZmluZSBvbyAxMDAwMDAwMDA3TEwKI2RlZmluZSBtaWQgKChsK3IpPj4xKQojZGVmaW5lIGdldGJpdCh4LGkpICgoeCk+PihpKSYxKQojZGVmaW5lIG9uYml0KHgsaSkgKCh4KXwoMTw8KGkpKSkKI2RlZmluZSBvZmZiaXQoeCxpKSAoKHgpJn4oMTw8KGkpKSkKI2RlZmluZSBjbnRiaXQoeCkgKF9fYnVpbHRpbl9wb3Bjb3VudGxsKHgpKQojZGVmaW5lIG1lc2V0KGEseCkgbWVtc2V0KGEseCxzaXplb2YoYSkpCiNkZWZpbmUgZm9yaW5jKGksYSxiKSBmb3IoaW50IGk9YTtpPD1iO2krKykKI2RlZmluZSBmb3JkZWMoaSxhLGIpIGZvcihpbnQgaT1hO2k+PWI7aS0tKQojZGVmaW5lIGRlYnVnKHgpIGNlcnI8PCN4PDwiID0gIjw8eDw8IlxuIgojZGVmaW5lIHJ1bnRpbWUoc3RpbWUpICgoY2xvY2soKSAtIHN0aW1lKSAvIENMT0NLU19QRVJfU0VDICogMTAwMCkKI2RlZmluZSBjaGVja2ZpbGUoRmlMZU5hTWUpIHsgaWYoZm9wZW4oRmlMZU5hTWUiLmlucCIsInIiKSkgZnJlb3BlbihGaUxlTmFNZSIuaW5wIiwiciIsc3RkaW4pLGZyZW9wZW4oRmlMZU5hTWUiLm91dCIsInciLHN0ZG91dCk7IH0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgaW5wKFQgJngpIHsgc3RhdGljIGNoYXIgazsgc3RhdGljIGJvb2wgbmVnOyB3aGlsZSgoaz1nZXRjaGFyKCkpIT0nLScgJiYgIWlzZGlnaXQoaykpOyBuZWcgPSBrPT0nLSc7IHg9KG5lZz1rPT0nLScpPzA6ay00ODsgd2hpbGUoaXNkaWdpdChrPWdldGNoYXIoKSkpIHggPSAoeDw8MykgKyAoeDw8MSkgKyAgay00ODsgeD1uZWc/LXg6K3g7IH0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgb3V0KFQgeCkgeyBpZih4PDApIHB1dGNoYXIoJy0nKSx4PS14OyBpZih4PjkpIG91dCh4LzEwKTsgcHV0Y2hhcih4JTEwKzQ4KTsgfQojZGVmaW5lIHNwYWNlIHB1dGNoYXIoJyAnKQojZGVmaW5lIGVuZGxpbmUgcHV0Y2hhcignXG4nKQojZGVmaW5lIGlucGludCAoeyBpbnQgeDsgaW5wKHgpOyB4OyB9KQojZGVmaW5lIGlucGNoYXIgKHsgY2hhciBrOyB3aGlsZSgoaz1nZXRjaGFyKCkpPT0nICcgfHwgaz09J1xuJyk7IGs7IH0pCiNkZWZpbmUgaW5wc3RyICh7IGNoYXIgazsgd2hpbGUoKGs9Z2V0Y2hhcigpKT09JyAnIHx8IGs9PSdcbicpOyBzdHJpbmcgcz0iIjsgcys9azsgd2hpbGUoKGs9Z2V0Y2hhcigpKSE9JyAnICYmIGshPSdcbicpIHMrPWs7IHM7IH0pCgovLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI2RlZmluZSBsb25nIGxvbmcgbG9uZwppbnQgbixtOwp2ZWN0b3I8aW50PiBhZGpbbWF4bl07CmludCBwYXJbbWF4bl07CmludCBudW1bbWF4bl0sbG93W21heG5dOwppbnQgZGZzVGltZTsKaW50IGN1dCxicmlkZ2U7CmJvb2wgZGRbbWF4bl07Cgp2b2lkIGRmcyhpbnQgdSkgewogICAgaWYoZGRbdV0pIHJldHVybjsKCiAgICBkZFt1XSA9IDE7CiAgICBudW1bdV0gPSArK2Rmc1RpbWU7CgogICAgaW50IGNoaWxkcyA9IDA7CiAgICBib29sIGlzQ3V0ID0gMDsKCiAgICBmb3IoaW50IHYgOiBhZGpbdV0pIHsKICAgICAgICBpZihkZFt2XSkgewogICAgICAgICAgICBpZih2IT1wYXJbdV0pIGxvd1t1XSA9IG1pbihsb3dbdV0sbnVtW3ZdKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICArK2NoaWxkczsKCiAgICAgICAgcGFyW3ZdPXU7CiAgICAgICAgZGZzKHYpOwoKICAgICAgICBsb3dbdV0gPSBtaW4obG93W3VdLGxvd1t2XSk7CgogICAgICAgIGlzQ3V0IHw9IChsb3dbdl0+PW51bVt1XSkgJiYgKHBhclt1XSB8fCBjaGlsZHM+PTIpIDsKICAgICAgICBicmlkZ2UrPShsb3dbdl0+PW51bVt2XSk7CiAgICB9CgogICAgY3V0Kz1pc0N1dDsKfQp2b2lkIGVudGVyKCl7CiAgICBjaW4+Pm4+Pm07CgogICAgaW50IHUsdjsKCiAgICBmb3JpbmMoaSwxLG0pIHsKICAgICAgICBjaW4+PnU+PnY7CiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHUpOwogICAgfQp9Cgp2b2lkIHNvbHZlKCl7CiAgICBmaWxsKGxvdysxLGxvdytuKzEsb28pOwoKICAgIGZvcmluYyhpLDEsbikgZGZzKGkpOwoKICAgIGNvdXQ8PGN1dDw8IiAiPDxicmlkZ2U7Cn0KCmludDMyX3QgbWFpbigpCnsKICAgIGNoZWNrZmlsZSh0YWcpOwogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgogICAgZW50ZXIoKTsKICAgIHNvbHZlKCk7CgogICAgcmV0dXJuIDA7Cn0K