#include<bits/stdc++.h>
using namespace std;
const int N=200;
typedef long long ll;

int n,ans_dp,mdp,ch[N];ll ans_lf;
vector<int>g[N];
void dfs(int x,int dp,int fa=-1){
	int sz=0;mdp=max(mdp,dp);
	for(int j:g[x])if(j!=fa){
		++sz;dfs(j,dp+1,x);
	}
	ch[dp]=max(ch[dp],sz);
}

int main(){
	cin>>n;
	for(int i=1;i<n;++i){
		int x,y;cin>>x>>y;
		g[x].push_back(y);g[y].push_back(x);
	}
	ans_dp=n;ans_lf=n;
	for(int i=1;i<=n;++i){
		memset(ch,0,sizeof ch);mdp=0;
		dfs(i,1);
		ll tmp=1;
		for(int i=1;i<mdp;++i)tmp*=ch[i];
		if(mdp<ans_dp||(mdp==ans_dp&&tmp<ans_lf)){
			ans_dp=mdp;ans_lf=tmp;
		}
		for(int j:g[i])if(j>i){
			memset(ch,0,sizeof ch);mdp=0;
			dfs(i,1,j);dfs(j,1,i);
			ll tmp=2;
			for(int i=1;i<mdp;++i)tmp*=ch[i];
			if(mdp<ans_dp||(mdp==ans_dp&&tmp<ans_lf)){
				ans_dp=mdp;ans_lf=tmp;
			}
		}
	}
	cout<<ans_dp<<' '<<ans_lf<<endl;
	return 0;
}

