Example

Input

5
1 2
1 3
1 4
1 5


Output

6
#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long
#define ll long long
ll ans;
map<ull,ll>m;
const int maxn=200005;
vector<int>g[maxn];
ull dp[maxn];
const ull b=1000000007;
void dfs(int u,int p)
{
	dp[u]=1;
	for(int i=0;i<g[u].size();i++)
	{
		int v=g[u][i];
		if(v==p)
		continue;
		dfs(v,u);
		dp[u]+=dp[v]*b;
	}
	ans+=m[dp[u]];
	m[dp[u]]++;
}
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<n;i++)
	{
		int u,v;
		scanf("%d%d",&u,&v);
		g[u].push_back(v);
		g[v].push_back(u);
	}
	dfs(1,-1);
	printf("%lld\n",ans);
	return 0;
}